📜  如何使用列表理解在 python 中的列表中获取素数 - Python (1)

📅  最后修改于: 2023-12-03 14:52:04.839000             🧑  作者: Mango

如何使用列表理解在 Python 中的列表中获取素数

在 Python 中,我们常常需要筛选出一些素数(质数),即除了 1 和本身以外,不能被其他数整除的数。使用列表理解可以方便地完成这个任务。

以下是获取素数的 Python 代码片段:

# 获取小于n的所有素数
n = 100
primes = [i for i in range(2, n) if all(i % j != 0 for j in range(2, i))]

print(primes)

这个列表理解式中,我们用 range(2, n) 遍历了从 2 到 n-1 的所有数字,然后用一个 all() 嵌套的列表推导式来判断该数是否为素数。all(i % j != 0 for j in range(2, i)) 判断 i 是否能够被从 2 到 i-1 的所有数字整除。如果 all() 中的表达式返回 True,则 i 为素数,被包含在 primes 列表中。

除此之外,我们还可以使用 Sieve of Eratosthenes 算法来筛选素数,代码如下:

# 使用 Sieve of Eratosthenes 算法获取小于n的所有素数
n = 100
sieve = [True] * n
for i in range(2, int(n**0.5)+1):
    if sieve[i]:
        sieve[i*i:n:i] = [False] * len(sieve[i*i:n:i])
primes = [i for i in range(2, n) if sieve[i]]

print(primes)

该算法的原理是:从 2 开始,将每个素数的倍数都标记成合数,直到筛完所有小于 n 的数。在遍历时,我们只需遍历到 n 的平方根即可。

总结一下,使用列表理解可以方便地获取 Python 中列表中的素数。而且,Sieve of Eratosthenes 算法更加高效。