在 Python 中寻找质数的无限重复错误

Endless Repeating Error in finding Prime Number in Python

我输入一个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 的 maximum recursion depth。您可以增加最大递归深度,也可以使用迭代方法而不是当前的递归方法。需要明确的是,递归是指从内部调用函数。增加最大递归深度:

import sys

sys.setrecursionlimit(2000)

你应该可以自己想出一个迭代版本。希望对您有所帮助!