理系の若者が思ったことを書くブログです。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
素数とは、1 と自分自身以外に正の約数を持たない、1 でない自然数のことです。
1~100までの素数は容易に探索できるかもしれません。
でも1~1000までの素数となるとちょっと骨が折れるでしょうね。
そこで、プログラミングの出番です。
実を言うと素数を探索するアルゴリズムは複数あります。
したがって、素数はコンピュータ計算でも探索できます。
ここでは、次の方法で素数を探索してみようと思います。
① a_k = k (k = 1,2,3…1000)となる数列akを定義する。
② k = 1であれば、素数ではないと判断する。
③ k = 2であれば、素数と判断する。
③ k >2であるa_kを2~kまでのすべての数で割っていく。
④ ③のときに、割った数pに対してひとつでもa_k ≡ 0 (mod p) を満たせば
素数でないと判断する。
※modの意味がわからない方はこちらへ⇒http://sur.ac/faq/mod.html
⑤ kの値を繰り上げて③~④を繰り返す。
上の計算方法をVBAプログラムにすると次のようになります。
Sub primenumber()
Dim k, j As Long
Dim hantei As Long
Dim counter As Long
counter = 0
For k = 1 To 1000
If k = 1 Then
hantei = 0
'1は素数じゃない。
End If
If k = 2 Then
hantei = 1
counter = counter + 1
Cells(counter, 1).Value = counter
Cells(counter, 2).Value = k
'2は素数である。
End If
If k = 3 Then
hantei = 1
counter = counter + 1
Cells(counter, 1).Value = counter
Cells(counter, 2).Value = k
'3は素数である。
End If
If k > 3 Then
hantei = 1
For j = 2 To k - 1
Data = k Mod j
If Data = 0 Then
hantei = 0
End If
Next j
If hantei = 1 Then
counter = counter + 1
Cells(counter, 1).Value = counter
Cells(counter, 2).Value = k
End If
'3以上の数の素数判定実施。
End If
Next k
End Sub
解析結果:

このように、プログラミングを勉強すれば素数も簡単に探せるようになるのです。
1~100までの素数は容易に探索できるかもしれません。
でも1~1000までの素数となるとちょっと骨が折れるでしょうね。
そこで、プログラミングの出番です。
実を言うと素数を探索するアルゴリズムは複数あります。
したがって、素数はコンピュータ計算でも探索できます。
ここでは、次の方法で素数を探索してみようと思います。
① a_k = k (k = 1,2,3…1000)となる数列akを定義する。
② k = 1であれば、素数ではないと判断する。
③ k = 2であれば、素数と判断する。
③ k >2であるa_kを2~kまでのすべての数で割っていく。
④ ③のときに、割った数pに対してひとつでもa_k ≡ 0 (mod p) を満たせば
素数でないと判断する。
※modの意味がわからない方はこちらへ⇒http://sur.ac/faq/mod.html
⑤ kの値を繰り上げて③~④を繰り返す。
上の計算方法をVBAプログラムにすると次のようになります。
Sub primenumber()
Dim k, j As Long
Dim hantei As Long
Dim counter As Long
counter = 0
For k = 1 To 1000
If k = 1 Then
hantei = 0
'1は素数じゃない。
End If
If k = 2 Then
hantei = 1
counter = counter + 1
Cells(counter, 1).Value = counter
Cells(counter, 2).Value = k
'2は素数である。
End If
If k = 3 Then
hantei = 1
counter = counter + 1
Cells(counter, 1).Value = counter
Cells(counter, 2).Value = k
'3は素数である。
End If
If k > 3 Then
hantei = 1
For j = 2 To k - 1
Data = k Mod j
If Data = 0 Then
hantei = 0
End If
Next j
If hantei = 1 Then
counter = counter + 1
Cells(counter, 1).Value = counter
Cells(counter, 2).Value = k
End If
'3以上の数の素数判定実施。
End If
Next k
End Sub
解析結果:
このように、プログラミングを勉強すれば素数も簡単に探せるようになるのです。
PR
Comment