maj*_*d5_ 6 python algorithm math primes python-3.x
我正在寻找一种生成素数的算法.我发现罗伯特威廉汉克斯完成了以下一个.它比其他算法更有效,更好,但我无法理解它背后的数学.
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]]
Run Code Online (Sandbox Code Playgroud)
Trues值数组和最终素数数组之间的关系是什么?
与开始Ñ True在数组的值,与i从枚举3到sqrt(n)通过的步骤2,如果我 TH阵列中的条目仍然True,从设定的所有条目i^2通过的步骤阵列的端部2*i到False(这些将是倍数i).
True最后留在数组中的所有奇数条目都是素数.
所有这样找到的数字和2都是n下面存在的素数.
| 归档时间: |
|
| 查看次数: |
348 次 |
| 最近记录: |