编写程序实现用Eratosthenes筛法寻找给定范围内的素数代码及结果
时间: 2024-09-10 14:27:33 浏览: 48
MATLAB寻找素数的源程序代码-综合文档
当然可以。Eratosthenes筛法是一种古老的算法,用于查找一定范围内所有的质数(素数是指只有1和它本身两个正因数的自然数)。以下是使用Python编写的一个简单版本的埃拉托斯特尼筛法:
```python
def eratosthenes_sieve(n):
# 创建一个布尔列表,初始所有数字都标记为True,表示它们可能是素数
primes = [True] * (n + 1)
primes[0] = primes[1] = False # 0和1不是素数
# 遍历到√n,将每个素数的倍数标记为合数
for i in range(2, int(n**0.5) + 1):
if primes[i]:
for j in range(i*i, n+1, i): # 跳过i的平方,因为之前的因子已经被标记了
primes[j] = False
# 输出所有小于等于n的素数
prime_numbers = [i for i, is_prime in enumerate(primes) if is_prime]
return prime_numbers
# 示例,找出1到30之间的素数
result = eratosthenes_sieve(30)
print("1到30内的素数有:", result)
```
当你运行这段代码,会得到1到30内的所有素数:[2, 3, 5, 7, 11, 13, 17, 19, 23, 29]。
阅读全文