我使用以下代码:
import math
def is_prime(num):
num_sqrt=int(math.sqrt(num))+1
for i in range(2, num_sqrt):
if(num%i == 0):
return False
return True
prime_sum=3
counter=2
for a in range(5, 2000000, 2):
if(is_prime(a)):
counter = counter +1
print a, counter
prime_sum=prime_sum+a
print prime_sum
我得到142913828920
上述程序输出的最后10行是:
1999859 148925
1999867 148926
1999871 148927
1999889 148928
1999891 148929
1999957 148930
1999969 148931
1999979 148932
1999993 148933
142913828920
网站http://www.numberempire.com/primenumbers.php确认1999993是148933年素数( - > http://www.numberempire.com/primenumbers.php?number=1999993&action=check)。
这里有什么问题?
答案 0 :(得分:3)
您正在错误地初始化变量prime_sum
。前两个素数是2和3所以它应该是5(而不是3)。在现代数学中,1通常不被视为素数。
答案 1 :(得分:1)
它违反了项目欧拉的精神,发布声称是一个完整解决方案的代码(甚至尝试整个解决方案)。发表回答是一种更大的违背精神的行为。
IMHO。
格里