我是一个尝试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的素数和总和列表,但问题仍然存在。 我做错了什么?
答案 0 :(得分:1)
您正在完全跳过2,因为您是在第一次迭代中从a=1
和a=a+2
开始的
答案 1 :(得分:0)
以a = 5开头,忽略前2个素数2和3。
和s = 5(加上前2个素数,2和3)
循环从5到200万。
a = a + 2行将从a = 5开始。