Описание задачи
Данная программа должна вывести все простые числа в заданном диапазоне (от 0 до n
) при помощи алгоритма «Решето Эратосфена».
Решение задачи
- Принимаем значение определяющее верхнюю границу диапазона и записываем его в переменную
n
. - Инициализируем переменную
sieve
(«решето») множеством чисел от 2 доn
. - Используем цикл
while
, который прекратит свою работу, когда множествоsieve
станет пустым. - Примем во внимание тот факт, что минимальное число в этом множестве (на первой итерации это будет 2) всегда простое.
- Выводим это число на экран.
- Далее удаляем это число вместе со всеми числами, кратными ему (в заданном диапазоне).
- Продолжаем это делать, пока множество
sieve
не станет пустым. - Конец
Исходный код
Ниже дан исходный код для вывода всех простых чисел из заданного диапазона при помощи алгоритма под названием «решето Эратосфена». Результаты работы программы также даны ниже.
n = int(input("Введите верхнюю границу диапазона: ")) sieve = set(range(2, n+1)) while sieve: prime = min(sieve) print(prime, end = "\t") sieve -= set(range(prime, n+1, prime))
Объяснение работы программы
- Пользователь вводит верхнюю границу диапазона, и она записывается в переменную
n
. - Инициализируем переменную
sieve
множеством всех чисел в диапазоне от 2 доn
. Тип «множество» задается функциейset
, а все числа диапазона определяются при помощи функцииrange
. - Цикл
while
будет работать, пока множествоsieve
не станет пустым. - Переменная
prime
инициализируется минимальным значением из множестваsieve
. Обращаем внимание, что это всегда будет простое число. И это простое число выводится на экран. - Затем это число и все числа, кратные ему, удаляются из множества
sieve
. - Пункты 4 и 5 повторяются до тех пор, пока множество
sieve
не станет пустым, то есть количество элементов в нем станет равно 0.
Результаты работы программы
Пример 1: Введите верхнюю границу диапазона: 10 2 3 5 7 Пример 2: Введите верхнюю границу диапазона: 15 2 3 5 7 11 13