经过 10 分钟的工作,我编写了一个如下所示的函数。它返回低于参数的所有素数的列表。我已经使用了所有已知的编程和数学技巧,以尽可能快地完成此功能。要找到所有低于一百万的素数,大约需要 2 秒。
您是否看到任何进一步优化它的可能性?有任何想法吗?
def Primes(To):
if To<2:
return []
if To<3:
return [2]
Found=[2]
n=3
LastSqr=0
while n<=To:
k=0
Limit=len(Found)
IsPrime=True
while k<Limit:
if k>=LastSqr:
if Found[k]>pow(n,0.5):
LastSqr=k
break
if n%Found[k]==0:
IsPrime=False
break
k+=1
if IsPrime:
Found.append(n)
n+=1
return Found