筛法(挨拉托色尼筛法)是一种用来求所有小于N的素数的方法。用筛法求素数的基本思想是:把从2到n的一组正整数从小到大按顺序排列。从中依次删除2的倍数、3的倍数、5的倍数,直到根号N的倍数为止,剩余的即为2~N之间的所有素数。用python实现
时间: 2024-02-05 16:14:15 浏览: 173
python使用筛选法计算小于给定数字的所有素数
可以使用标记法实现筛法(Sieve of Eratosthenes),具体步骤如下:
1. 创建一个长度为N+1的布尔数组,表示每个数字的状态,初始化为True(即未被标记)。
2. 从2开始,遍历到根号N,如果当前数字未被标记,则将其所有倍数(除了本身)标记为False(即非素数)。
3. 遍历完毕后,所有未被标记的数字即为素数。
以下是Python代码实现:
```python
import math
def sieve_of_eratosthenes(n):
primes = [True] * (n+1) # 初始化为True
primes[0] = primes[1] = False # 0和1不是素数
for i in range(2, int(math.sqrt(n))+1):
if primes[i]:
for j in range(i*i, n+1, i):
primes[j] = False
return [i for i in range(2, n+1) if primes[i]]
print(sieve_of_eratosthenes(30)) # 输出小于30的素数
```
输出结果为:
```
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
```
阅读全文