python - 质数生成器解释?

标签 python algorithm python-3.x math primes

<分区>

我正在寻找一种生成素数的算法。我找到了罗伯特·威廉·汉克斯 (Robert William Hanks) 完成的以下作品。它非常高效,比其他算法更好,但我无法理解其背后的数学原理。

def primes(n):
    """ Returns  a list of primes < n """
    lis = [True] * n
    for i in range(3,int(n**0.5)+1,2):
        if lis[i]:
            lis[i*i::2*i]=[False]*int((n-i*i-1)/(2*i)+1)
    return [2] + [i for i in range(3,n,2) if lis[i]]

True 值数组与最终素数数组之间的关系是什么?

最佳答案

以数组中的 n True 值开始,i3 枚举到 sqrt (n) 通过 2 的步骤,如果数组中的第 i 条目仍然是 True,设置为Falsei^2到数组末尾的所有条目,步长为2*i(这些都将是 i 的倍数)。

最后留在数组中的 1 以上的所有奇数 True 项都是质数。

所有这样找到的数,2,都是存在于n以下的素数。

关于python - 质数生成器解释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42811019/

相关文章:

python - 在 GAE(日历 API)的 Python 中解析来自 InsertCalendar 的原子响应

python - 切换 kivy 小部件

algorithm - 生成一个文件,该文件具有两个包含整数的大文件共有的整数

python - 从查询集中获取查询集

python - 创建目录中多个文本文件的字数字典

python - pygame 上的平台游戏 : string has no attribute 'get_rect' while trying to make border for game

python - 创建一个序列,每个元素中有两个满足一定的距离标准

performance - 矩阵求逆的最快方法

python - 在 python3、Anaconda 中导入 cv2 时出错

python-3.x - Selenium 与 Python-unittest - 测试返回进程已完成,退出代码为 0,并且不执行任何操作