[英]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.