(我完全是个初学者)我想写一个递归函数,它可以告诉我一个数字是否是质数:但我总是得到相同的递归错误:以下是我的代码:
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发布于 2020-06-05 20:03:00
你的问题是sqrt(a),它返回一个浮点型,而不是你的代码所需要的整型。
您可以将其替换为ceil(sqrt(a)),以从中获取一个整数。
此外,此代码不适用于查找数字是否为质数,因为所有数字都将至少有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))https://stackoverflow.com/questions/62214830
复制相似问题