Excelで指定した数より小さい最初の素数を見つける
Excelには、素数を直接的に計算する組み込み関数はありませんが、Visual Basic for Applications(VBA)を使用してマクロを作成することで、これを実現することが可能です。
関数のコード
Function PrevPrime(ByVal num As Long) As Long
Do While num > 2
num = num - 1
If IsPrime(num) Then
PrevPrime = num
Exit Function
End If
Loop
PrevPrime = "No primes less than input"
End Function
Function IsPrime(ByVal num As Long) As Boolean
Dim i As Long
If num < 2 Then
IsPrime = False
Exit Function
ElseIf num = 2 Then
IsPrime = True
Exit Function
ElseIf num Mod 2 = 0 Then
IsPrime = False
Exit Function
End If
For i = 3 To Sqr(num) Step 2
If num Mod i = 0 Then
IsPrime = False
Exit Function
End If
Next i
IsPrime = True
End Function
関数の使い方
以上のVBAコードをコピーして、ExcelのVBAエディター(Alt + F11キーを押して開く)から標準モジュール(挿入から)に貼り付け、マクロが有効になったワークブックに保存します。
このマクロを保存した後は、`=PrevPrime(A1)`のようにExcelのセルに数式を入力することで、A1セルの値より大きい最初の素数を表示できます。ただし、非常に大きな数値に対してこの関数を使用すると計算時間が長くなる可能性があることに注意してください。
まとめ
ExcelのVBAを利用すると、特定の数より小さい最初の素数を求めるなど、Excelの組み込み関数だけでは実現できない高度な計算を行うことが可能になります。この記事を参考に、独自のVBA関数を作成して、Excelの利用範囲を広げてみてください。
コメント