我有一個功能,列出小於N的素數:當我嘗試記憶時,爲什麼我的代碼更慢?
def ListPrimes(N):
list = [2]
for n in range(3, N, 2):
for i in range(3, int(sqrt(n)+1)):
if n % i == 0:
break
else:
list.append(n)
return list
我試圖使它更快,所以我改變一行到以下幾點:
def ListPrimesFaster(N):
list = [2]
for n in range(3, N, 2):
for i in list:
if n % i == 0:
break
else:
list.append(n)
return list
我感到驚訝的是,第二個版本至少慢5倍,因爲它與第一個版本相同,只是變量i必須遍歷較短的列表。
我試圖找到一種更快的方式列出質數比一些N.
顯着更快的方式是Eratosthenes篩 – qwr
您究竟如何執行您的測量BTW? –
@barakmanos,縮進是正確的,第二個片段正常工作,albiet變慢。 –