&引用;RuntimeError:获取对象的str时超出了最大递归深度;用Python

&引用;RuntimeError:获取对象的str时超出了最大递归深度;用Python,python,Python,当我运行以下代码时: number = input("Please Input Number...") def prime_checker(divisor): line = str(number) + " divided by " + str(divisor) + " = " + str(number/divisor) if number == divisor: print "This number is prime" elif

当我运行以下代码时:

number = input("Please Input Number...")

def prime_checker(divisor):
       line = str(number) + " divided by " + str(divisor) + " = " + str(number/divisor)
       if number == divisor:
            print "This number is prime"
       elif number % divisor == 0:
             print line
       else:
            print "This number is not divisible by " + str(divisor)
            next_number = divisor + 1
            prime checker(next_number)

prime_checker(2)
我收到“RuntimeError:获取对象的str时超过了最大递归深度”。 我试图建立一个程序,将检查所有的数字下输入的数字,看看是否输入的数字是素数。 如果数字可以被任何东西整除,程序将给出除法语句。 但是,当程序检查输入的数字是否可被999整除时,程序开始执行以下操作:


有办法解决这个问题吗?或者这是我可以检查的最大值吗?

有很多方法可以搜索素数。如果你想找更快的东西,我建议你用谷歌搜索一下

对于你的问题,其实没有理由递归地做你正在做的事情。如果你打算用“检查每一个可能的除数”这样的方法来做,那么迭代就可以了

正如在评论中提到的,除非您更改一些内部选项,否则Python不会让您进行非常深入的递归。对你来说,好像在1000左右

对于一种简单的迭代方法,请尝试以下方法:

number = int(input("Please Input Number..."))

def is_prime(number):
    # Check all numbers between 2 and the number you are concerned about
    for divisor in range(2, number+1):
        if number == divisor:
            print('Number is prime')
            return True
        elif number % divisor == 0:
            print(str(number) + " divided by " + str(divisor) + " = " + str(number/divisor))
            return False
        else:
             print('Number is not divisible by ' + str(divisor))

is_prime(number)

当素数足够大(或者它的最小除数足够大)时,这将超过最大递归深度。只是不要使用递归。Python中有一些非递归的质数检查程序-。但是,如果这是一个赋值或类似的赋值,在重新诅咒之前,也许更好地控制更多的非素数。我如何更改内部选项?@MithunRameshkumar看到这个问题:尽管请小心@MithunRameshkumar如果您仍在处理同一个问题,我强烈建议您不要以当前的方式使用递归。祝你好运()