我想解決項目歐拉中的10個問題。它包括找到所有素數低於200萬的總和。我根據Eratosthenes的Sieve編寫了以下代碼。如何使Eratosthenes的篩子更快?
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太慢了。我非常感謝能夠幫助改善這個計劃。
http://stackoverflow.com/a/23423821/2141635使用總和,你有答案 –
也有關:http://stackoverflow.com/q/2068372/1639625 –
相關:[加快位串/位操作在Python中?](http://stackoverflow.com/q/2897297/4279) – jfs