Я пытаюсь решить 10-ю проблему в Project Euler. Он состоит в нахождении суммы всех простых чисел меньше двух миллионов. Я написал следующий код на основе решета Эратосфена.
import time
t0 = time.time()
n=200000
liste=list(range(2,n))
k=2
s=2
while k <=n:
liste=list(set(liste)-set(range(k,n,k)))
if liste!=[]:
k=min(liste)
s+=k
else:
break
print(s)
t1 = time.time()
total = t1-t0
print(total)
Я протестировал приведенный выше код для n=200000, но он слишком медленный для n=2000000. Я был бы очень благодарен за любую помощь в улучшении этой программы.
while k <=n
наwhile k <=(n/k)
и покончите с этим (конечно, теперь вы получите непустоеliste
, которое на данный момент будет содержать только простые числа!). - person Will Ness   schedule 19.06.2015