我需要达到1,000,000,但由于某种原因它没有给我1,000,000的输出,我不知道我做错了什么。每次我输入像500这样的小数字,它都会给我正确的输出,但一旦我输入999,999或1,000,000,它就不会给出任何输出,当我执行键盘中断时,它说它在break处停止,但我需要这个break,以便值只重复一次。
bachslst=[]
primeslst=[]
q=[]
newlst=[]
z=[]
def goldbach(limit):
primes = dict()
for i in range(2, limit+1):
primes[i] = True
for i in primes:
factors = range(i, limit+1, i)
for f in factors[1:]:
primes[f] = False
for i in primes:
if primes[i]==True:
z.append(i)
for num in range(4,limit+1,2):
for k in range(len(z)):
for j in z:
if (k + j ) == num :
x=(str(k),str(j))
q.append(x)
newlst.append([x,[num]])
break
bachslst.append(num)
print(bachslst,'n')
return newlst
这里所指的中断不是代码中的中断,而是由键盘中断引起的中断。
如果您希望在1.5小时内得到结果,请尝试减少正在进行的计算量。如果你做一个搜索,有很多实现来测试哥德巴赫猜想。有些是其他语言的,但你仍然可以使用它们来影响你的算法。
我没有看过它,但这里是Python中的另一个实现:https://codereview.stackexchange.com/questions/99161/function-to-find-two-prime-numbers-that-sum-up-to-a-given-even-number