Python用埃拉托斯特筛法确定不超过n的所以素数运算代码
时间: 2024-05-09 09:16:53 浏览: 40
python使用筛选法计算小于给定数字的所有素数
以下是基于埃拉托斯特筛法实现的 Python 代码,可以确定不超过 n 的所有素数:
```
def find_primes(n):
# 创建一个初始值都为 True 的列表,用于判断对应下标的数是否为素数
is_primes = [True] * (n+1)
# 将小于等于 1 的数字标记为非素数
is_primes[0] = is_primes[1] = False
# 遍历 2 到 sqrt(n) 的每一个数,如果该数为素数,则将其倍数标记为非素数
i = 2
while i <= int(n**0.5):
if is_primes[i]:
j = i * 2
while j <= n:
is_primes[j] = False
j += i
i += 1
# 将剩余未标记为非素数的数字输出为素数列表
primes = [i for i in range(n+1) if is_primes[i]]
return primes
```
注意:这个代码没有进行输入检查,如果输入的 n 小于等于 1,将会出现 IndexError 或者其他异常。
阅读全文