Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Neobius en 20 Abril 2006, 17:40 pm



Título: Descomponer o factorizar un numero
Publicado por: Neobius en 20 Abril 2006, 17:40 pm
Hay alguna funcion en Visual Basic 6 que sirva para descomponer o factorizar un numero?? (ej.: 6=2*3)


Título: Re: Descomponer o factorizar un numero
Publicado por: Robokop en 20 Abril 2006, 19:14 pm
Citar
Option Explicit
Private Sub cmdCalcular_Click()
    ' Declarar las variables a utilizar:
    Dim B As Integer          ' Para los bucles.
    Dim lngFactores() As Long ' Este array alojará los factores en los que se
                              ' descompone el número.
    Dim NFacts As Long        ' Número de factores que han aparecido.
    Dim Numero As Long        ' El número que se utiliza para llevar a cabo
                              ' las operaciones.
    Dim strTmp As String      ' Una ayudita para, después, construir una cadena
                              ' de texto que se mostrará en un cuadro de mensaje.
   
    ' Si el número no es entero, convertirlo y mostrarlo redondeado en el TextBox.
    txtNumero = CLng(Val(txtNumero))
    ' Se asigna el número del TextBox a la variable.
    Numero = Val(txtNumero)
    ' Si el número es inferior a 2 ( y mayor que 0), el número está en un factor.
    If Numero >= 0 And Numero < 2 Then
        ReDim lngFactores(0)
        lngFactores(0) = Numero
        GoTo FIN
    End If
    ' Si el numero es negativo, calcular como si fuese uno positivo.
    If Numero < 0 Then Numero = -Numero
    B = 2
    While B <= Numero ' Bucle.
        If Numero Mod B = 0 Then ' Si el numero se puede dividir por B, significa que B
                                 ' es un factor.
            ReDim Preserve lngFactores(NFacts) ' Redimensionar la variable que guarda
                                               ' los factores.
            lngFactores(NFacts) = B ' Guardar el factor en la variable.
            NFacts = NFacts + 1 ' Ahora hay un factor más.
            Numero = Numero \ B ' Se divide el número para buscar otros divisores.
        Else
            ' Si B no es factor, probar con el siguiente número.
            B = B + 1
        End If
    Wend
    ' Ahora todos los factores del número están en la variable lngFactores.
    ' Vamos a hacer que aparezcan en un mensaje multipliándose entre ellos.
    ' (2 * 2 * 3 ...)
    ' Para ello se recorre el array, por medio de un bucle, y se van colocando
    ' en una variable de cadena.
    For B = 0 To UBound(lngFactores)
           strTmp = strTmp & lngFactores(B) & " * "
       Next B
    ' Una vez construida la cadena, se muestra el mensaje mostrando los factores.
    MsgBox "El número " & Val(txtNumero) & " descompuesto es: " & Mid(strTmp, 1, Len(strTmp) - 3)
End Sub

Codigo sacado de el guille --> http://www.elguille.info/colabora/vb2005/XabiO_Descomponer.htm