错误的输出项目Euler#50 Python 3

2024-06-28 16:31:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我在尝试欧拉50计划。太有趣了!问题如下。你知道吗

The prime 41, can be written as the sum of six consecutive primes:

41 = 2 + 3 + 5 + 7 + 11 + 13  
^{2}$

我的代码如下。它是用python3.5.4编写的

sieve = [True] * 1000000
listSieve = []
listOfNum = []
sumOfNum = 0
s = 0
for p in range(2, 1000000):
    if sieve[p]:
        listSieve.append(p)
        for i in range(p*p, 1000000, p):
            sieve[i] = False

while sumOfNum < 1000000:
    sumOfNum += listSieve[s]
    listOfNum.append(sumOfNum)
    s += 1

finalSet = list(set(listSieve) & set(listOfNum))
print(listOfNum)
print(max(finalSet))

基本上,它制作了两个列表,一个是使用eratosthenes筛(listSieve)生成的高达100万的素数,另一个是通过添加连续素数(listOfNum)生成的数字列表。很抱歉变量名不是很好。然后我交叉引用这些列表来找到连续的素数,并输出最高的素数。正确答案是997651,但我的程序输出958577。有什么问题吗?你知道吗


Tags: thein列表forrange素数计划print