素因数分解をExcelにさせてみました

ExcelのVBAを使って、初心者の練習として、素因数分解を表示する関数を作ってみました。

使ってみると、意外と面白い。

初心者の作っているものなので、詳しい方から見ると、問題があるかもしれませんが、ちょっと遊んでみるには十分だと思います。

Function primefact(ByVal Moto As Long) As String

Dim Num As Long, i As Long, Up As Long  'Num:分解する数、Up:iで割っていく最大
Dim Kai As String       'Kai:素因数 Moto:素の数を覚えておく

Num = Moto
Up = Num \ 2

Kai = ""

'整数をチェック
If Moto < 1 Then
   MsgBox "1以上の整数を入力してください"
   Exit Function
End If

'偶数をチェック
Do
   If Num Mod 2 = 0 Then               '余りが0なら素因数
       Kai = Kai & "×" & 2
       Num = Num / 2
   End If
Loop While Num Mod 2 = 0

'奇数を確認
For i = 3 To Up Step 2
   If Num Mod i = 0 Then               '余りが0なら素因数
       Kai = Kai & "×" & i
       Num = Num / i
       i = i - 2                       '素因数、何回もトライ
   End If
Next

If Num <> 1 Then Kai = Kai & "×" & Num
If Num = Moto Then Kai = "?素数です"

primefact = Moto & "=" & Mid(Kai, 2)       '頭に×が来るのを消す

End Function
    

この記事が気に入ったらサポートをしてみませんか?