2、使用集合实现筛选法求素数
时间: 2023-11-27 13:51:27 浏览: 102
利用筛法求素数
筛选法求素数是一种常见的算法,可以使用集合来实现。具体步骤如下:
1. 创建一个从2到指定范围的所有自然数的集合。
2. 在集合中找到最小的质数2,将2的倍数从集合中删除。
3. 找到集合中当前最小的质数p,将p的倍数从集合中删除。
4. 重复步骤3直到p*p大于指定范围。
5. 剩下的集合中的数即为素数。
下面是使用Python代码实现:
```python
def sieve_of_eratosthenes(n):
"""
使用集合实现筛选法求素数
:param n: 指定范围
:return: 素数列表
"""
# 创建包含2到n的所有自然数的集合
numbers = set(range(2, n + 1))
primes = []
while numbers:
# 找到当前集合中的最小质数
p = min(numbers)
primes.append(p)
# 将p的倍数从集合中删除
multiples = set(range(p, n + 1, p))
numbers -= multiples
# 如果p*p大于指定范围,则退出循环
if p * p > n:
break
# 将剩下的集合中的数添加到素数列表中
primes += sorted(numbers)
return primes
```
这个函数使用集合实现筛选法求素数,可以返回一个素数列表。
阅读全文