0

欧拉计划 #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)。

这里有什么问题?

4

2 回答 2

3

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

于 2012-10-21T19:34:37.840 回答
1

It violates the spirit of Project Euler to post code purporting to be a whole solution (or even an attempt at a whole solution). It's an even greater breach of spirit to post an answer.

imho.

Gerry

于 2012-10-22T12:28:42.473 回答