科普丨 python判断素数的算法(python,判断素数)
2023年03月04日丨佚名丨分类: 科普大家好,今天来给大家分享python判断素数的算法的相关知识,通过是也会对python,判断素数相关问题来为大家分享,如果能碰巧解决你现在面临的问题的话,希望大家别忘了关注下本站哈,接下来我们现在开始吧!
1python中怎么判断素数
def is_prime(m):
"""判断m是否素数"""
for i in range(2,int(m**(1/2))+1):
if m % i == 0:
return False
else:
return True
2python求质数的算法
为大家分享了多种方法求质数python实现代码,供大家参考,具体内容如下
题目要求是求所有小于n的质数的个数。
求质数方法1:
穷举法:
根据定义循环判断该数除以比他小的每个自然数(大于1),如果有能被他整除的就不是质数:
def countPrimes1(self, n):
"""
:type n: int
:rtype: int
"""
if n=2:
return 0
else:
res=[]
for i in range(2,n):
flag=0 # 质数标志,=0表示质数
for j in range(2,i):
if i%j ==0:
flag=1
if flag==0:
res.append(i)
return len(res)
求质数方法2:
利用定理:如果一个数是合数,那么它的最小质因数肯定小于等于它的平方根。所以判断一个数是否是质数,只需判断它是否能被小于它开根后的所有数整除。这样做的运算会少很多。
def countPrimes2(self, n):
if n=2:
return 0
else:
res=[]
for i in range(2, n):
flag=0
for j in range(2, int(math.sqrt(i))+1):
if i % j == 0:
flag = 1
if flag == 0:
res.append(i)
return len(res)
求质数方法3:
利用定理:如果一个数是合数,那么它的最小质因数肯定小于等于它的平方根。我们可以发现只要尝试小于等于平方根的所有数即可。列举从 3 到根号x的所有数,还是有些浪费。比如要判断101是否质数,101的根号取整后是10,需要尝试的数是1到10。但是可以发现,对9的尝试是多余的。不能被3整除,必然不能被9整除……顺着这个思路走下去,其实,只要尝试小于根号x的质数即可。而这些质数,恰好前面已经算出来了,已经存在res中了。
def countPrimes3(self, n):
if n = 2:
return 0
else:
res = []
for i in range(2, n):
flag = 0
for j in res:
if i % j == 0:
flag = 1
if flag == 0:
res.append(i)
return len(res)
希望对大家有帮助
3python中用while循环计算100到10000的素数?
素数的计算方法有很多种。
最朴素的办法是,用所有小于n但大于1的整数去除n,如果均不能除尽,那么,n就是素数。这就是筛法的核心。
进一步,除了2之外,所有素数都是奇数,那么,用于试商的可以只用小于n但大于1的奇素数,并且只对奇数进行试商。
再进一步,如果一个数n可以分解为两个因数相乘,那么,至少其中一个因数是不大于n的平方根的,所以,我们可以对奇数n用不小于n的平方根但大于1的奇素数去试商。
到这一步,已经可以用来对一个比较小的数进行进行“是否是素数”的检查了。麻烦的只是需要建立一个素数表,记录从小到大我们找到的每一个素数。
参考以下代码:
筛法还有更高的应用方式,比如while中对i不是每次加而是每次加素数表前若干个数的积,如6,30,210中的某一个。(2是第一个素数)这种需要更多的控制,实现复杂,对速度的提升远没有只对奇数试商和只用平方根以下的素数试商的提升大。
除了筛法以外,还有其它的方式去判断一个数是不是素数,这里就不罗列了。
对于这道练习题,会筛法就足够了,想进一步提升,你可以在上图给出的方法的基础上尝试用步长为6的循环来做,如果做到了,那么步长为30或更大的就只是体力活了。
4python 如何判断一个数是不是质数
让这个数除,从2开始到她的一半,如果余数没有0就是质数。大兄弟,这是非常基本的算法,你都拿到网上问,你的学习态度堪忧啊
5python中如何编程求1到100之间的素数
1、新建python文件,testprimenum.py;
2、编写python代码,求1到100之间的素数;
list1 = []
i = 2
for i in range(2,101):
j = 2
for j in range (2,i):
if i%j == 0:
break
else:
list1.append(i)
print(list1)
3、窗口中右击,选择‘在终端中运行Python文件’;
4、查看执行结果,1-100之间的素数为:
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
OK,本文到此结束,希望对大家有所帮助。
版权声明:本站文章如无特别注明均为原创,转载请以超链接形式注明转自财广经验。