猫史档案馆


【PYTHON】不用循环判断素数

用户:KIHIOKIHIO查看:0 回复:1 评论:0 创建时间:2022-04-28T15:55:07


不用循环判断素数?千万别以为我是标题党,不用循环可以判断素数的。

那用什么方法呢?答案是:递归。

我这就写一个递归判断素数的函数:

def prime(a,b):
    if a==b:
        return True
    if a%b==0:
        return False
    return prime(a,b+1)

其中,a是将要判断的数,b是一个用来模拟循环的数字,调用时要输入2。当函数返回是时,数字为素数;返回否时,数字不为素数。

我来解释一下原理:当b=2时,系统先判断a能不能被2整除,如果行就直接返回否,不行就返回prime(a,3),然后又去判断a能否被3整除,如果行还是直接返回否,不行就返回prime(a,4)...利用这种办法,可以巧妙地实施试算。然后一直到prime(a,a)如果还不行的话,说明a不能被2~a-1之间的数整除,那么因为a=b,它就返回是了,所以这个函数可以判断质数。

说了那么多,我们还是写一下用来输入和输出的代码:

n=int(input('请输入数字:'))
if prime(n,2):
    print(str(n)+'是质数。')
else:
    print(str(n)+'不是质数。')

亲测代码能正常运行,赶快去试试吧!


回复

上一页1 页 / 共 1下一页
KIHIOKIHIO

还好格式还在线,要不然写这帖子吐了。

点赞0


评论