我对算法很陌生,刚开始编码周回来。请帮我出这一个:欧拉项目#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)。 –