欧拉计划的第十个问题:
10以下的素数之和为2 + 3 + 5 + 7 = 17。
求两百万以下的所有素数之和。
我发现了这个片段:
sieve = [True] * 2000000 # Sieve is faster for 2M primes
def mark(sieve, x):
for i in xrange(x+x, len(sieve), x):
sieve[i] = False
for x in xrange(2, int(len(sieve) ** 0.5) + 1):
if sieve[x]: mark(sieve, x)
print sum(i for i in xrange(2, len(sieve)) if sieve[i])
在此处发布 ,运行 3 秒。
我写了这段代码:
def isprime(n):
for x in xrange(3, int(n**0.5)+1):
if n % x == 0:
return False
return True
sum=0;
for i in xrange(1,int(2e6),2):
if isprime(i):
sum += i
我不明白为什么我的代码(第二个)要慢得多?