0
0 комментариев

Здравствуйте, я написал алгоритм для поиска простых чисел по принципу Решета Эратосфена. Вот код:

[apcode language=»python»]

from time import time
from math import sqrt
n= int(input())
start_time = time()
numb = {k for k in range(2,n+1)}
for k in range (2, int(sqrt(n))+2):
        if  k not in numb:
            continue
        else:
            for r in range (2*k, n+1,k):
                numb.discard(r)
print(numb)
print("--- %s seconds ---" % (time() - start_time))

[/apcode]

Пока n<=1 500 000 все работает как нужно, но когда ввожу n> 2 000 000 в строке вывода выводиться подобное:
«12311, 312313, 312331, 312343, 312349, 312353, 312371, 312383, 312397, 312401, …»
Как будто множество «обрезается» на определенном количестве элементов. Либо это команда print не может вывести такое количество элементов? Пожалуйста, объясните, в чем ошибка и как можно исправить.

Решенный вопрос
Добавить комментарий