用列表实现筛选法求素数
时间: 2023-10-11 20:10:35 浏览: 133
筛选法(Sieve of Eratosthenes)是一种较为常见的求素数的方法,它的基本思想是从小到大遍历每个自然数,如果这个数是素数,则将其所有的倍数都标记为合数。这样遍历完后没有被标记的数即为素数。
下面是用 Python 实现筛选法求素数的代码,其中使用了一个布尔型列表 `is_prime` 来表示每个数是否为素数,初始时所有数都被标记为素数,然后从 2 开始遍历每个数,如果它是素数,则将其所有的倍数标记为合数。最终输出所有未被标记为合数的数:
```python
def sieve_of_eratosthenes(n):
is_prime = [True] * (n+1)
is_prime[0] = is_prime[1] = False
for i in range(2, int(n**0.5)+1):
if is_prime[i]:
for j in range(i*i, n+1, i):
is_prime[j] = False
return [i for i in range(n+1) if is_prime[i]]
```
可以使用以下代码进行测试:
```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]
```
阅读全文