繁体   English   中英

Python RecursionError

[英]Python RecursionError

(我是一个完全的初学者)我想写一个递归的 function 可以告诉我一个数字是否是质数:但我不断收到相同的递归错误:这是我的代码:


from math import *
def has_a_divider(n,p):
    if n%p==0:
        return True
    elif has_a_divider(n,(p-1))!= True:
        return False
    else:
        return False


def is_prime(a):
    if has_a_divider(a,sqrt(a))==False:
        return True
    else:
        return False

你的问题是sqrt(a)它返回一个浮点数而不是你的代码需要的 int。
您可以将其替换为ceil(sqrt(a))以从中获取 int 。

此外,此代码不适用于查找数字是否为素数,因为所有数字都至少有 1 有一个分隔符。 一个可能的解决方案是更新has_a_divider以检查大于 1 的分隔符。

一个可能的实现:

from math import ceil, sqrt
def has_a_divider(n,p):
    if p < 2:
        return False
    if n % p==0:
        return True
    return has_a_divider(n,(p-1))


def is_prime(a):
    if a == 1:
        return False

    return not has_a_divider(a,ceil(sqrt(a)))

print(is_prime(3))
print(is_prime(5))
print(is_prime(4))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM