【发布时间】:2021-01-14 05:49:21
【问题描述】:
我正在尝试创建一个函数来确定一个数字是否为质数。但是,我只能在函数中使用一个参数。这是我到目前为止所拥有的,但我不确定如何执行递归部分以使其返回正确的值。
问题是“写一个递归函数“IsPrime(x)”来判断x(一个正整数)是否为素数。如果是素数,返回True;否则,返回False。基本思想是对于所有 x >= 3,如果 x 不能被任何小于或等于 sqrt(x) 的素数整除,则它是素数。同样,不要使用内置的 Python 函数。相反,写你自己的代码来实现它。”
def IsPrime(x):
if x == 1:
return False
elif x == 2:
return True
else:
return IsPrime(math.floor(math.sqrt(x)))
【问题讨论】:
-
这是某种任务吗?我认为不可能在只有一个参数的单个递归函数中做到这一点(尽管我当然可能是错的)。
-
@RobinZigmond 是的。这就是为什么我很困惑。我试图确保 x 不能被任何小于或等于 sqrt(x) 的素数整除,但我不知道该怎么做。如果这可以帮助
-
是什么让你认为递归在这里是合适的?知道一个较小的数是素数,知道当前数是素数有什么帮助?此外,您的代码中的任何地方都没有“均分”测试。
-
@trincot 我不知道,这是我被分配的任务,我只是想弄清楚如何做到这一点。我在代码中放入的递归部分肯定是不正确的,但我不知道递归部分应该是什么。
-
你能编辑问题并逐字逐句地引用你的作业吗?