合成数(素数でない数)を素数の積の形に書き表すこと。例:12 = 2 * 2 * 3。

次のプログラムでは,3以上の素数は全て素数であることを使って、2および3以上の奇数で割っている。3以上の奇数には9のように素数でないものも含まれるが、9で割る前に3で割っているので9で割り切れることはない。

factoriz.cの移植、AB 4.24.00で動作確認。

#strict
#prompt

Sub Factorize(x As Long)
Print x; "= ";
While x >= 4 And (x Mod 2) = 0
Print "2 * ";
x /= 2
Wend

Dim d As Long, q As Long
d = 3
q = x \ d
While q >= d
If x Mod d = 0 Then
Print d; "* ";
x = q
Else
d += 2
End If
q = x \ d
Wend
Print x
End Sub

Dim x As Long
Input x
Factorize(x)