我對算法很陌生,剛開始編碼週迴來。請幫我出這一個:歐拉項目#10
素數之和小於10爲2 + 3 + 5 + 7 = 17
見以下兩個萬支全質數的總和。
我嘗試通常的蠻力方法,該方法ofcourse吸入。我嘗試閱讀Sieve算法。並實現了這一點,是的,它只是爲奇數運行:
i=[x for x in range(3,2000001,2)]
print(len(i))
j=0
sum=2
while(max(i)!=j):
m=0
while(m<(2000000-(i[j]**2)/(2*i[j]))):
a=(i[j]**2)+2*m*i[j]
if a in i:
i.remove(a)
m+=1
j+=1
for s in range(1,len(i)+1):
sum+=i[s]
print(sum)
程序仍然需要像5個多小時。我在3小時內停止了它。我哪裏錯了?
蠻力通常不夠好項目歐拉問題。你必須找到一種加速找到正確答案的算法。看看「算法分析」或AofA領域。某些問題的一些算法非常高效,並且可以使您的加速達到百萬倍。您還應該考慮記憶和動態編程(DP)。 –