def primes(n):
""" returns a list of prime numbers from 2 to < n """
if n < 2: return []
if n == 2: return [2]
# do only odd numbers starting at 3
s = range(3, n, 2)
# n**0.5 may be slightly faster than math.sqrt(n)
mroot = n ** 0.5
half = len(s)
i = 0
m = 3
while m <= mroot:
if s[i]:
j = (m * m - 3)//2
s[j] = 0
while j < half:
s[j] = 0
j += m
i = i + 1
m = 2 * i + 3
# make exception for 2
return [2]+[x for x in s if x]用这个算法求2000000以内的素数,2S都不用,够快的
高效求素数算法
本文介绍了一种快速求解特定范围内素数的算法,通过优化筛选过程,仅需2秒即可找出200万以内的所有素数。该算法特别针对大于2的所有奇数进行检查,并采用动态更新的方式排除合数。
6298

被折叠的 条评论
为什么被折叠?



