python 3.有人能帮我解一下哥德巴赫密码吗?当我调用这个函数,然后把1,000,000,它似乎没有吐出任何输出,我



我需要达到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

最新更新