Project Euler#10-Python错误结果
我正在使用以下代码:Project Euler#10-Python错误结果,python,Python,我正在使用以下代码: 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))
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
该网站确认1999993是148933素数(->)
这里出了什么问题?您的变量初始化不正确。前两个素数是2和3,所以它应该是5(不是3)。在现代数学中,1通常不被视为素数。您错误地初始化了变量
prime\u sum
。前两个素数是2和3,所以它应该是5(不是3)。在现代数学中,1通常不被视为素数。它违反了欧拉计划的精神,即发布声称是一个整体解(甚至是一个整体解的尝试)的代码。发布答案是对精神的更大破坏
伊姆霍
Gerry发布代码声称是一个完整的解决方案(甚至是对一个完整解决方案的尝试)违反了Euler项目的精神。发布答案是对精神的更大破坏 伊姆霍
Gerry我认为
素数和
应该初始化为5。2也是素数。是的,怎么了?求和错了吗?哦,我的双重错误:把1和2当作素数,然后忘记了3。所以,是的,素数和应该是2+3=5,我认为prime和应该初始化为5。2也是素数。是的,怎么了?求和错了吗?哦,我的双重错误:把1和2当作素数,然后忘记了3。所以,是的,素数和应该是2+3=5