最速の素数判定アルゴリズム  

このエントリーをはてなブックマークに追加
126112
>>124
J=I*2 にしてるけど、Jより小さい素数の倍数は不要でしょう?
説明すると、
まずは2刻みに4以上を全部消すよね?
次は3刻みなんだけど6は既に消えてるし2の倍数は消えてるから9から消す
その次は5刻みだけど
やっぱり5*2 も5*3も消えてるから5*5から10刻みに消せばいい

つまり素数N番目は N*Nから 2N刻みに消せばいい
127112: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 がループ中再評価されるんなら外に出してね