繁体   English   中英

如何使用单参数Python递归确定素数

[英]How to determine prime number using recursion with single parameter Python

我正在尝试创建一个函数来确定一个数字是否为质数。 但是,我只能在函数中使用一个参数。 这是我到目前为止所拥有的,但我不确定如何进行递归部分以使其返回正确的值。

问题是“写一个递归函数“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)))

这当然不是查找素数的最有效方法,但可以通过将您在问题中描述的“基本思想”转换为算法来使用递归来完成:

  • 如果 x >= 3,则遍历从 2 到 sqrt(x) 的所有整数 i:
    • 检查 i 是否为素数(递归使用此函数)。
      • 如果是,请检查 x 是否可以被 i 整除。
        • 如果是,则 x 不是素数(退出函数)。
        • 如果没有,请继续。
      • 如果没有,请继续。
  • 如果我们已经遍历了所有的 i 并且函数仍在运行,那么 x 不能被任何一个质数 i 整除,所以 x 是一个质数。
import math

def IsPrime(x):
    if x == 1:
        return False
    if x == 2:
        return True
    for i in range(2, math.floor(math.sqrt(x)) + 1):
        if IsPrime(i):
            if x % i == 0:
                return False
    return True

请注意,无论何时到达return语句,函数的执行都会终止。 例如,这允许我们省略显式的else语句。

暂无
暂无

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

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