「指定範囲の素数の合計を返す関数」を作ってみましょう。今回は 10~50の素数を合計して返す関数です。
サンプルコード
Function SumPrimesInRange(ByVal startNum As Integer, ByVal endNum As Integer) As Long
Dim i As Integer, j As Integer
Dim isPrime As Boolean
Dim total As Long
total = 0
For i = startNum To endNum
If i >= 2 Then
isPrime = True
' 2から√iまでで割り切れるかチェック
For j = 2 To Int(Sqr(i))
If i Mod j = 0 Then
isPrime = False
Exit For
End If
Next j
If isPrime Then
total = total + i
End If
End If
Next i
SumPrimesInRange = total
End Function
VB呼び出し例
Sub TestSumPrimes()
Dim result As Long
result = SumPrimesInRange(10, 50)
MsgBox "10~50の素数の合計は " & result
End Sub
VB実行結果
- 10~50の素数は 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47
- 合計は 311
ポイント
- 配列を返す代わりに「合計値」を返すので、戻り値の型は
Longにしています - 素数判定は「2~√nまで割り切れるか」をチェックする方法で効率的
- 範囲を変えれば「100~200の素数の合計」なども簡単に計算可能
👉 この関数を応用すれば「素数の平均値」や「素数の個数」を返す関数も作れます。
