在 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)
你应该可以自己想出一个迭代版本。希望对您有所帮助!
我输入一个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)
你应该可以自己想出一个迭代版本。希望对您有所帮助!