New product
Este producto ya no está disponible
Disponible el:
Algorítmo de Factorización de Números Enteros
En este artículo te muestro un programa que hace la factorización de números Enteros. El código fuente esta directamente sencillo de leer y diseñado en VB.NETDestinatario :
* Campos requeridos
o Cancelar
En esta oportunidad les traigo un algoritmo de programación de factorización de números enteros bastante sencillo, diseñado en Visual Basic. Con descarga del código fuente totalmente gratis.
Primero que nada, les daré una definición simple de lo que es la factorización de números enteros que no es más que descomponer un numero entero entre sus factores primos, independientemente de lo grande que sea el número.
Publicidad.
Ahora vamos a mostrarle un poco como funciona:
'''
''' Descompone un numero entero en sus componentes primos.
'''
''' Numero entero mayor a 1
'''Una lista de numeros primos que representan la descomposición
'''
Function FactorizacionEntero(Num As Integer) As List(Of Integer)
Dim i As Integer = 2
Dim lista As New List(Of Integer)
Do While (Num > 1)
While (Num Mod i) = 0
Num /= i
lista.Add(i)
End While
i += 1
Loop
EscribeLinea("Lista completa")
Return lista
End Function
Como pueden ver en el código anterior lo que realizo es un bucle que lo que hace es ir dividiendo desde arriba hacia abajo al número por los divisores del contador i, que en este caso diríamos que son los primos. ¿Por qué menciono que “diríamos que son primos”? porque lo que se hace es incrementar a i en 1 y luego comprobar si la división es exacta o no entre Num e i. En ningún momento se comprueba si i es primo o no. De hecho, es más rápido incrementar i y hacer la comprobación de la división exacta que insertar una rutina de comprobación de si el número es primo o no.
A continuación, les muestro el procedimiento MAIN que corre el programa.
Sub Main()
Dim nu As Integer = 0
Do
Console.Title = "Factorización de enteros"
EscribeLinea("Inserta el numero a descomponer: (0 para salir del programa)")
Try
nu = CInt(LeeLinea())
Catch ex As Exception
EscribeLinea("Debe ser un numero valido")
nu = 10
Continue Do
End Try
'Descomponer numeros primos
Dim lista As List(Of Integer) = FactorizacionEnteroT(nu)
EscribeLinea("")
EscribeLinea("El resultado de la factorizacion de entero")
For Each n As Integer In lista
EscribeLinea(nu & vbTab & " | " & n)
nu /= n
Next
EscribeLinea("1")
Loop Until nu < 1
Exit Sub
Console.ForegroundColor = ConsoleColor.Yellow
EscribeLinea("")
EscribeLinea("Fin del programa...")
LeeLinea()
End Sub
En este código lo que hago es corregir el titulo de la ventana, por supuesto agrego el tratamiento de error a los números obtenidos con LeeLinea() y agrego la lista donde estarán los números primos. Al final se le agrega el numero 1 para que se vea bonito al final de la operación.
Publicidad.
Para que puedas ver como trabaja el código hice una función espejo de FactorizacionEntero, pero le agregué una T. Las líneas adicionales sirven para imprimir en pantalla de forma detallada lo que hace el programa, y así puedes ver como realiza la factorización paso a paso.
Function FactorizacionEnteroT(Num As Integer) As List(Of Integer)
Dim i As Integer = 2
Dim lista As New List(Of Integer)
Do While (Num > 1)
While (Num Mod i) = 0
EscribeLinea("")
EscribeLinea("Dividiendo {0} entre {1}", Num, i)
EscribeLinea(" {0} Multiplo de {1}", Num, i)
EscribeLinea(" Agrego a {0}", i)
Num /= i
lista.Add(i)
End While
Escribe(If(Num > 1, "Subiendo un mas.", "Ya no es posible seguir"))
i += 1
Loop
EscribeLinea("")
EscribeLinea("Lista completa")
EscribeLinea("")
Return lista
End Function
Finalmente la salida del programa es la siguiente:
Bueno esto es todo por los momentos, no olviden dejar sus comentarios o sugerencias de algún código para un próximo artículo
Elaborado por
Elimar García
Eli Programa
Excelente
-Muy buen ejemplo eli.
No se requiere registro
Si luego de leer nuestro articulo aun tiene dudas, puede hacer su pregunta utilizando el siguiente formulario.
Si el enlace de descarga redirige a otro producto que no es el descrito en el artículo o está roto, reportarlo usando nuestro