Project Euler#10 - Python错误的结果

时间:2012-10-21 19:25:11

标签: python

Project Euler #10

我使用以下代码:

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)。

这里有什么问题?

2 个答案:

答案 0 :(得分:3)

您正在错误地初始化变量prime_sum。前两个素数是2和3所以它应该是5(而不是3)。在现代数学中,1通常不被视为素数。

答案 1 :(得分:1)

它违反了项目欧拉的精神,发布声称是一个完整解决方案的代码(甚至尝试整个解决方案)。发表回答是一种更大的违背精神的行为。

IMHO。

格里