このページに関してのお問い合わせはこちら
最速の素数判定アルゴリズム
ツイート
126
:
112
:
2001/06/28(木) 17:42
>>124
J=I*2 にしてるけど、Jより小さい素数の倍数は不要でしょう?
説明すると、
まずは2刻みに4以上を全部消すよね?
次は3刻みなんだけど6は既に消えてるし2の倍数は消えてるから9から消す
その次は5刻みだけど
やっぱり5*2 も5*3も消えてるから5*5から10刻みに消せばいい
つまり素数N番目は N*Nから 2N刻みに消せばいい
127
:
112
:2001/06/28(木) 17:53
Stepが使えるかどうか知らないんだけど StepN はN刻みって事ね
で、FOR文がTO 以下なら繰り返すんだとして
Limit = Int(Sqr(Num))
For J = 4 To Num Step 2:sosuu(J) = 0:NextJ
For I = 3 To Limit Step 2
If sosuu(I) = 1 Then
For J = I*I To Num Step 2*I
sosuu(J) = 0
Next J
End If
Next I
FORについてる I*I や 2*I がループ中再評価されるんなら外に出してね