项目Euler#10 Python

时间:2016-04-08 15:38:02

标签: python

我是一个尝试ProjectEuler问题的新手。

问题#10如下: 找出200万以下所有素数的总和。

我的代码如下

a=1
s=0
p=[]                                                         #just wanna see the primes for myself so creating a list for that       
while a<2000000:                                            #while value of primes is less than 2million
        if all(a%i!=0 for i in range(3,int(a**0.5)+1)):     #checks if the number is prime
            s=s+a                                           #add primes to the sum
            p.append(a)                                     #add the primes to their list
        a=a+2                                               #so that we only test odd numbers
print(s)
print(p)

所以问题是,列表中会弹出数字1,而2则不会显示。所有其他素数都包括在内。我尝试了许多调整来找到低于10的素数和总和列表,但问题仍然存在。 我做错了什么?

2 个答案:

答案 0 :(得分:1)

您正在完全跳过2,因为您是在第一次迭代中从a=1a=a+2开始的

答案 1 :(得分:0)

以a = 5开头,忽略前2个素数2和3。

和s = 5(加上前2个素数,2和3)

循环从5到200万。

a = a + 2行将从a = 5开始。