17.使用集合实现筛选法求解不大于指定自然数的所有素数
时间: 2024-05-11 22:14:01 浏览: 86
求小于一个数的所有素数
筛选法求素数的思路是:从2开始,将所有2的倍数标记为合数;然后再从3开始,将所有3的倍数标记为合数;再从5开始,将所有5的倍数标记为合数……依次类推,直到不大于指定自然数的所有素数都被筛选出来。
具体实现如下:
```python
def get_primes(n):
# 初始化集合,包含2到n的所有自然数
nums = set(range(2, n+1))
# 从2开始,依次将所有2的倍数、3的倍数、5的倍数……标记为合数
for i in range(2, int(n**0.5)+1):
if i in nums:
nums -= set(range(i*2, n+1, i))
return nums
```
使用示例:
```python
primes = get_primes(100)
print(primes) # 输出不大于100的所有素数
```
输出结果:
```
{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}
```
阅读全文