パソコン活用研究5番街(Visual Basic、Excel(VBA)、BASIC プログラミング研究)

素数を探す〜エラトステネスの篩い

(準備中)

エラトステネスの篩いの方法で素数を探す方法について。

10000までの素数をエラトステネスの篩いの方法で探してみます。
ただ素数を求めるだけではつまらないので、ついでに素因数分解までしています。

EXCELのB列は素因数分解の途中の数を保存する作業用です。
C列以降に素因数を保存していきます。


10000までの素数を探す場合、10000=100*100なので、100までの素数で素因数分解すればOKです。

@準備で、A列、B列に1〜10000までの数を記入していきます。

C列が空欄の数値は素数となるので、4以降の自然数を小さい素数(2)から順に素因数分解を
していきます。


Sub prime_fact()
' @準備
For i = 1 To 10000
Cells(i, 1) = i: Cells(i, 2) = i
Next i

i = 2
While (i < 100)
For j = 4 To 10000

col = 3
While (Cells(j, col) <> "")
col = col + 1
Wend

n = Cells(j, 2)
m = n Mod i


While (m = 0)
n = n / i
Cells(j, 2) = n
Cells(j, col) = i
col = col + 1
m = n Mod i
Wend

Next j

i = i + 1
While (Cells(i, 3) <> "")
i = i + 1
Wend

Wend

End Sub

ABC予想をやってみるでは、エラトステネスの篩いの方法を使わず、
小さい素数(2から)で割り算してみるという力業の方法で素因数分解しています。



TopPage > Visual BasIc&EXCEL活用研究目次