Python筛选法求2-n的素数
时间: 2024-03-18 10:40:37 浏览: 109
可以使用 Python 中的筛选法来求解 2-n 的素数,具体实现步骤如下:
1. 创建一个长度为 n+1 的列表,用于存储每个数是否为素数的标记,默认全部标记为 True。
2. 从 2 开始,将列表中的所有倍数标记为 False,因为它们不是素数。
3. 遍历列表,将标记为 True 的数加入结果列表中。
下面是具体的代码实现:
```python
def sieve_of_eratosthenes(n):
# 创建标记列表,初始化为 True
is_prime = [True] * (n+1)
# 将 0 和 1 标记为 False
is_prime[0], is_prime[1] = False, False
# 从 2 开始筛选
for i in range(2, int(n**0.5)+1):
if is_prime[i]:
# 将 i 的倍数标记为 False
for j in range(i*i, n+1, i):
is_prime[j] = False
# 遍历标记列表,将标记为 True 的数加入结果列表中
primes = [i for i in range(2, n+1) if is_prime[i]]
return primes
```
使用该函数,可以求解 2-n 的素数,例如:
```python
primes = sieve_of_eratosthenes(100)
print(primes)
```
输出结果为:
```
[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]
```
注意:该方法适用于 n 较小的情况,当 n 较大时,可能会导致内存溢出,需要进行优化。
阅读全文