python - 在Python中查找素数时出现无尽的重复错误

标签 python infinite-loop primes

我输入一个 Python 程序来查找第 n 个素数。

def prime(a, b = 2):

    def prime(a, b=2):
        def gcd(x, y):
            if (x % y == 0):
                return y
            else:
                return gcd(x, y - 1)

        if (gcd(b, b-1) > 1):
            return prime(a, b+1)
        elif (a - 1 > 0):
            return prime(a-1, b+1)
        else: return b

它成功地将第 94 个素数输出为 prime(94) --> 491。

但是,当我计算第 95 个素数时,我得到了无休止的重复错误输出。为什么会发生这种情况?感谢您的回答。

最佳答案

94 是 python 的最大递归深度。您可以增加最大递归深度,也可以使用迭代方法而不是当前的递归方法。需要明确的是,递归是指从函数内部调用函数。要增加最大递归深度:

import sys

sys.setrecursionlimit(2000)

您应该能够自己想出一个迭代版本。希望有帮助!

关于python - 在Python中查找素数时出现无尽的重复错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33872613/

相关文章:

java - 我的 getPrime() 方法无法正常工作。关于如何修复它有什么建议吗?

python - 如何在 python 中执行 "if-for"语句?

python - 哪些 tensorflow 操作会触发内存分配?

python - BeautifulSoup 没有正确解析 <td> 数据

java - 为什么在无限循环时 while 和 do-while 循环优于 for 循环?

python - 为双散列哈希表大小选择最佳素数?

python - Gensim Word2Vec 'you must first build vocabulary before training the model'

python - 需要其他方式来停止我的游戏(pygame)!

c++ - 为什么这段代码给我一个无限循环?

java - 素数查找器错误 - 将非素数显示为素数