素数を出力するプログラムをマクロで作ってみた
こんにちは、Mottyです。
概要
関数あるいは漸化式で表すことができるような単純な数であれば出力は簡単ですが、
そのような規則性がないものの場合、各値に対して真偽を判定させる必要があります。
今回は素数の出力をVBAで行ってみました。
素数
素数の定義は約数を"自分と1"の2つ以外に持たない数の集まりです。
ある数が素数かどうかを調べるには、1からある数まで順番に割り切れるかどうかを調べる
必要があります。
次の2つ(100,97)が素数かどうか調べたいと思ったときは
下記のようなプログラムになります。
prime.bas
Sub Main()
Call prime(100) '
Call prime(97) '
End Sub
Sub prime(Byval i As Long)
'素数判定がTrueなら出力
If IsPrime(i) Then
debug.print(i)
End If
End Sub
'---素数判定---
Function IsPrime(Byval num As Long) As Boolean
Select Case num
Case 1:
IsPrime = False
Case Is >1:
cnt = 2
Do While cnt = num - 1
If num Mod cnt = 0
IsPrime = False
End If
cnt = cnt + 1
Loop
IsPrime = True
End Function
戻り値としてほしい場合は、Functionプロシージャーに変えていただければOKです。
以上、VBA系の作品もちょくちょく投稿していきたいです。