筛法(挨拉托色尼筛法)是一种用来求所有小于N的素数的方法。用筛法求素数的基本思想# 是:把从2到n的一组正整数从小到大按顺序排列。从中依次删除2的倍数、3的倍数、5的倍# 数,直到根号N的倍数为止,剩余的即为2~N之间的所有素数。写python语言用筛法写素数
时间: 2024-02-12 20:07:51 浏览: 94
python使用筛选法计算小于给定数字的所有素数
以下是使用筛法求解素数的 Python 代码:
```python
def sieve_of_eratosthenes(n):
# 创建一个长度为 n+1 的布尔类型列表,用于标记每个数字是否为素数
is_prime = [True] * (n + 1)
# 0 和 1 不是素数,标记为 False
is_prime[0] = is_prime[1] = False
# 从 2 开始遍历到根号n
for i in range(2, int(n**0.5)+1):
# 如果当前数字已经被标记为非素数,则跳过
if not is_prime[i]:
continue
# 将 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]]
```
调用函数`sieve_of_eratosthenes(n)`返回所有小于等于`n`的素数的列表。例如,调用`sieve_of_eratosthenes(20)`会返回`[2, 3, 5, 7, 11, 13, 17, 19]`。
阅读全文