Описание задачи
Данная программа должна вывести все простые числа в заданном диапазоне (от 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

