- ベストアンサー
VB.NETで素因数分解のプログラムを作成する
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
- みんなの回答 (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]の範囲でループさせるとか。
その他の回答 (1)
- todo36
- ベストアンサー率58% (728/1234)
作ってみました 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()))