python 找素数的思路和算法

您所在的位置:网站首页 python怎么算素数 python 找素数的思路和算法

python 找素数的思路和算法

2023-08-13 12:30| 来源: 网络整理| 查看: 265

昨天,python草堂 457079928 QQ 群里有一位网友发了一小段 python 代码,是求100以内的素数的问题。问他的代码问题出在哪?代码截图如下:

这段代码运行的结果如下:

显然,这段代码有两个突出的问题:

不能正确判断一个数是否是素数;有很多重复的数。

搜索 “python 素数”,会出来很多关于 python 求素数的文章和示例代码,一看,竟然有很多示例代码存在与他的代码相同的问题。一句话:搜索很方便,但垃圾也很多。

就动手尝试用 python 实现了一下求区间内素数的问题,感觉使用 for… else…实现比较方便,记录下来备忘。

素数的定义

素数又叫质数(primenumber)。 质数定义:在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。

大于1的自然数;只能被1和它自身整除。 思路

通过判断两个数的余数是否等于 0 来判断能否整除。

求区间 [a, b]内的素数;对于任意一个满足 i ∈ [ a , b ] i \in [a,b] i∈[a,b] 的数;对于 j ∈ [ a , i − 1 ] j \in [a,i-1] j∈[a,i−1] , 若 i % j = = 0 i\%j ==0 i%j==0 成立,则 i 不是素数;若 i % j = = 0 i\%j ==0 i%j==0 不成立,则 i 是素数; 实现代码 su = [] # 用于存储找到的素数 for i in range(2,101): #外循环,要判断的每个数 for j in range(2,i): #内循环,测试是否存在能整除 i 的 j if i % j == 0: #判断 i 能否被 j 整除 #出现能整除 i 的 j, i 就不是素数,就终止内循环,且不执行else; #如果没有出现能整除 i 的 j,表明这个 i 是素数,内循环执行结束后,才会执行 else break else: #执行else,表示当前的 i 是素数,添加到 su 列表中 su.append(i) print(su)

使用 for…else,巧妙的借助 break,找到一个 j,内循环就会立即终止。 比较这段代码,就知道那位网友的代码的问题在哪了。

求区间内素数的通用函数

将前面的代码完善,封装为函数,就可以求任意区间内的素数了。

def get_su(a,b): su = [] # 用于存储找到的素数 for i in range(a,b+1): #外循环,要判断的每个数 if i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3