【发布时间】:2013-12-26 08:34:16
【问题描述】:
1,000,000,000,000 到 1,000,000,100,000 之间的所有质数之和是多少? 这行得通,但速度很慢。我需要优化它。我是 python 新手。 3614000181007876是正确答案
A=10 ** 6
N=A+1
B=10 ** 5
prime=[]
sum=0
for i in range(0,N):
prime.append(0)
for i in range(2,N):
if(prime[i]==1):
continue
for j in range(i*i,N,i):
prime[j]=1
for i in range((A ** 2)+1,(A ** 2)+B,2):
for j in range(2,A):
c=0
if(prime[j]==1):
continue
if(i%j==0):
c=c+1
if(c>0):
break
if(c==0):
#print(i)
sum=sum+i
print(sum)
【问题讨论】:
-
谷歌“埃拉托色尼筛”
-
1,000,000,000,000 到 1,000,000,100,000 之间的所有素数之和为 5042000251194180;使用我的
bsdgamesDebian 软件包中的primes作为primes 1000000000000 1000000100000|awk '{s += $1}END{print s}'- 计算时间不到百分之一秒 -
@BasileStarynkevitch : 3614000181007876 是正确答案
标签: python algorithm optimization primes