43. Решето Эратосфена.

(открыть в новой вкладке)

Условие:

Решето Эратосфена – алгоритм, изобретенный более 2000 лет назад и служащий для нахождения всех простых чисел от 2 до некоторого целого числа n.
Ценность данного алгоритма заключается в том, что на бумаге очень легко вычеркнуть все числа, кратные определенному числу. Сразу убираем 1 из списка простых чисел. Начинаем проверять числа на делимость с делителя 2, вычеркивая в списке все числа, которые кратные 2, кроме 2. Затем ищем следующее число после 2, которое не вычеркнуто и вычёркиваем все числа кратные ему, кроме его самого и т.д., пока не дойдём до конца списка. Цифры, которые в нём остались являются простыми.

Код:

# ввод данных
while True:
    digit = input("%100s" % "Введите целое число, до которого будем искать все простые числа: ")
    try:
        digit = int(digit)
        break
    except:
        print("%99s" % "Вы ввели не число.")

# составим список, в котором будем искать простые числа
result_list = []
for i in range(1, digit + 1):
    result_list.append(i)
result_list.remove(1)

count = 0
p = 2
while True:
    
    for i in result_list:
        if i != p and i % p == 0:
            result_list.remove(i) 
    while True:
        p += 1
        if p in result_list:
            break        
    if p == result_list[-1]:    
        break
   
print(result_list)