• ベストアンサー

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

質問者が選んだベストアンサー

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

じぶんだったら、 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)
回答No.2

作ってみました 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()))

関連するQ&A

専門家に質問してみよう