プロが教える店舗&オフィスのセキュリティ対策術

2以上の整数が与えられたとき、それを素数の積に分解するプログラムを作成したいのです。
例えば、TextBox1に24と打ち込んで、Button1をクリックすると、TextBox2に2×2×2×3が表示されるといった具合です。

↓ここからどうすれば良いか、ご教授お願い致します。
Private Sub IntegerButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim n, a As Integer
n = TextBox1.Text
Do
back:
If n Mod 2 = 0 Then
n = n Mod 2 = 0
Else
n = n Mod 3 = 0
End If
GoTo back
Loop Until n = n + 1
TextBox2.Text = n & "×"
End Sub
End Class

A 回答 (2件)

じぶんだったら、


pl: 素因数のリスト
N: 対象
m: 現在の素因数候補
として、
if N mod m = 0 then
plにmを追加。
N = N / m
else
m = m + 1
end
をループさせて、plを完成させる――というプログラムにしますね。
多少効率を考えると、m=2を特別扱いし、m=3,5,7,...[√N]の範囲でループさせるとか。
    • good
    • 0

作ってみました



Dim n As Long = TextBox1.Text
Dim m As Long = 2
Dim pl As ArrayList = New ArrayList

If (n <= 1) Then
Label1.Text = "NG"
Exit Sub
End If
While n >= m * m
While n Mod m = 0
pl.Add(m.ToString())
n /= m
End While
If (m = 2) Then
m = 3
Else
m += 2
End If
End While
If (n > 1) Then
pl.Add(n.ToString())
End If
Label1.Text = String.Join("×", CType(pl.ToArray(GetType(String)), String()))
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!