python中对列表进行欧拉筛法求素数
时间: 2023-08-31 15:09:55 浏览: 97
Python素数判断类
好的,关于列表进行欧拉筛法求素数的问题,我可以给出回答。在Python中,我们可以先定义一个整数n,然后创建一个长度为n+1的列表,将所有元素初始化为True。接着,我们可以遍历2到n的所有整数,如果当前整数是素数,那么我们将它的倍数在列表中标记为False。最终,所有未被标记为False的整数即为素数。以下是实现该算法的Python代码:
```python
def euler_sieve(n):
is_prime = [True] * (n + 1)
primes = []
for i in range(2, n + 1):
if is_prime[i]:
primes.append(i)
for j in range(len(primes)):
if i * primes[j] > n:
break
is_prime[i * primes[j]] = False
if i % primes[j] == 0:
break
return primes
```
这段代码中,我们使用两个数组:is_prime用于标记每个数是否为素数,primes用于存储所有素数。在遍历整数时,我们只需要考虑质数的倍数,因为合数的倍数一定已经被标记为False了。因此,我们可以维护一个素数列表,每次遍历时只考虑该素数的倍数。
阅读全文