📜  为大输入python在给定范围内查找素数(1)

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

Python 计算给定范围内的素数

在计算机科学中,素数指的是只能被1和本身整除的正整数。在本篇文章中,将介绍如何使用Python编程语言计算给定范围内的素数。

算法

素数的判断算法有很多,这里我们介绍一种较为简单的算法 - 埃拉托斯特尼筛法(Sieve of Eratosthenes)。

这个算法的具体思路是:

  • 先构造一个从2到给定范围内的正整数列表。
  • 从2开始,将其所有的倍数都标记为非素数。
  • 继续寻找下一个素数(未被标记为非素数的最小值),并以同样的方式标记其倍数。
  • 重复步骤2和3,直到所有数字都被处理。

最终,未被标记为非素数的数字即为素数。

代码

下面是使用 Python 语言实现埃拉托斯特尼筛法的代码:

def sieve_of_eratosthenes(n):
    """
    计算从2到给定数n之间的素数,并以列表形式返回结果
    """
    is_prime = [True] * (n + 1)
    p = 2
    while p ** 2 <= n:
        if is_prime[p]:
            for i in range(p ** 2, n + 1, p):
                is_prime[i] = False
        p += 1
    return [p for p in range(2, n + 1) if is_prime[p]]
使用方法

使用上述代码实现的函数,我们可以计算出在给定范围内的素数。比如,要计算出所有小于等于100的素数,只需要调用函数sieve_of_eratosthenes(100)即可。

>>> sieve_of_eratosthenes(100)
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
总结

本文介绍了一种简单而高效的计算素数的算法 - 埃拉托斯特尼筛法,并给出了具体的Python实现代码。使用上述代码,我们可以轻松计算给定范围内的素数。