Python如何判断质数(素数)

Python如何判断质数(素数)我曾经在 2 次面试中被问到如何判断质数 所以对这个问题有种特殊的感觉 今天又独自研究了一翻其写法 竟又有新发现 故写下此篇以记之

我曾经在2次面试中被问到如何判断质数,所以对这个 问题有种特殊的感觉,今天又独自研究了一翻其写法,竟又有新发现,故写下此篇以记之。

先来看下什么是质数:

质数(Prime number),又称素数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个因数的数)。——via维基百科 

简单来说就是,只能除以1和自身的数(需要大于1)就是质数。举个栗子,5这个数,从2开始一直到4,都不能被它整除,只有1和它本身(5)才能被5整除,所以5就是一个典型的质数。

那么想计算出一个随机数是不是质数用Python应该怎么写呢?首先第一句话肯定是接受用户输入的数字:

n = int(input("please enter the number:")) 

接着要计算该数是不是质数,那么就要从2开始一直除到该数之前的那个自然数,很明显是一个数字范围:

for i in range(2, n): 

在循环体里面,每次循环当然就是要判断当次除法是否是整除,这里可以使用求模运算,也就是取余,当余数为0时,该数就不是质数:

 if n % i == 0: print("%d is not a prime number!" % n) break 

这个break意思就是当该数不是质数时,就跳出整个循环,该数就不是我们要的数字了。

那么,所有循环迭代都完成后还没有找出能整除的情况的话,那么可以判断该数就是一个质数,所以:

else: print("%d is a prime number!" % n) 

那么此时,所有代码就写好了,不过为了看起来简单,没有罩一层是否大于1的判断,用户输入的数字默认需要大于1:

n = int(input("please enter the number:")) for i in range(2, n): if n % i == 0: print(" %d is not a prime number!" % n) break else: print(" %d is a prime number!" % n) 

这里要细细品味这段代码,else其实不是和if是一对,而是和for并排的,我们常见的是if…else…或者if…elif…else诸如此类,但其实for也可以和else搭配出现,在这段代码里,当某一次遍历结果余数为0后,break生效,那循环就结束了,那与之成对出现的else代码也就不执行了;当所有遍历结束后没有一次余数为0,那该循环就转到else开始执行,打印输出“该数为质数”。

最后我们来随便输2个数字看看功能有没有实现:

please enter the number:11 1 1 is a prime number! 
please enter the number:21 2 1 is not a prime number! 
今天的文章 Python如何判断质数(素数)分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2024-12-17 13:33
下一篇 2024-12-17 13:30

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/88894.html