python编写一个能使用爱拉托斯散筛法求N以内的素数的程序。
时间: 2024-03-06 07:49:21 浏览: 136
python如何求100以内的素数
好的,我可以帮你编写一个能使用爱拉托斯散筛法求N以内的素数的Python程序。以下是代码:
```python
def eratosthenes(n):
# 创建一个长度为n+1的列表,用于标记数字是否为素数
prime = [True for i in range(n+1)]
p = 2
while p**2 <= n:
if prime[p]:
# 将p的倍数标记为合数
for i in range(p**2, n+1, p):
prime[i] = False
p += 1
# 输出所有素数
for p in range(2, n+1):
if prime[p]:
print(p, end=' ')
# 测试
n = int(input("请输入一个正整数n:"))
eratosthenes(n)
```
运行程序后,会要求你输入一个正整数n,然后程序会输出1到n之间的所有素数。这个程序的时间复杂度是O(nloglogn),比较高效。
阅读全文