python实现埃氏筛法求2~10000素数
时间: 2023-10-23 12:03:40 浏览: 148
埃氏筛法是一种用于求解一定范围内素数的算法。下面是使用Python实现埃氏筛法求解2~10000的素数的代码:
```python
def sieve_of_eratosthenes(n):
# 创建一个长度为n+1的列表,用于标记数字是否为素数,初始全部为True
primes = [True] * (n + 1)
# 将0和1标记为非素数
primes[0] = primes[1] = False
p = 2
while p * p <= n:
# 如果p没有被标记为非素数,则p一定是素数,因此将p及其倍数标记为非素数
if primes[p]:
for i in range(p * p, n + 1, p):
primes[i] = False
p += 1
# 返回所有标记为素数的数字
return [i for i in range(n + 1) if primes[i]]
# 调用函数并打印结果
primes = sieve_of_eratosthenes(10000)
print(primes)
```
以上代码实现了一个名为`sieve_of_eratosthenes`的函数,该函数接受一个参数`n`,用于指定范围。函数内部使用了一个长度为`n+1`的列表`primes`来标记数字是否为素数,其中初始全部为`True`。然后从2开始,找到一个素数后,将其倍数都标记为非素数。最终,返回所有标记为素数的数字。
在主程序中,调用`sieve_of_eratosthenes`函数并传入10000作为参数,得到2~10000范围内的素数列表,并将其打印输出。
阅读全文