10 分間の作業の後、以下に示す関数を作成しました。引数より下位のすべての素数のリストを返します。この関数を可能な限り高速にするために、私が知っているすべてのプログラミングと数学的トリックを使用しました。100 万未満の素数をすべて見つけるには、約 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