用户:
KIHIO查看: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)+'不是质数。')
亲测代码能正常运行,赶快去试试吧!