Hola, estoy intentando hacer un programa que descomponga un número en factores primos. Aunque lo conseguí, va muy lento y no lo hace perfecto.
Yo quería que me descompusiera el número de un textbox, le diera un botón y me pusiera la descomposición en un label de este modo:
textbox = 60
label = 2^2·3·5
Yo lo hice con un listbox porque no pude hacerlo de otra forma.
Este es mi código:
Public Class Form1
Function isPrime(ByVal iNum As Decimal) As Boolean
If (iNum < 2D) Then isPrime = False : Exit Function
If (iNum < 4D) Then isPrime = True : Exit Function
If (iNum Mod 2D = 0D) Then isPrime = False : Exit Function
Dim iMax As Decimal : iMax = CInt(Math.Sqrt(CDbl(iNum)))
Dim i As Decimal
For i = 3D To iMax Step 2D
If (iNum Mod i = 0D) Then isPrime = False : Exit Function
Next i
isPrime = True
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ListBox1.Items.Clear()
Dim a As Decimal = TextBox1.Text
Dim j As Decimal
Dim y As Decimal = 1D
Dim z As Decimal
For j = y To a
If isPrime(j) Then
For z = 1D To 1000D
If a Mod j ^ z = 0D Then ListBox1.Items.Add(j)
Next
End If
Next j
End Sub
End Class
Por favor, ¿pueden ayudarme a mejorar o mejor cambiar mi código?