Ver Mensaje Individual
  #6 (permalink)  
Antiguo 14/01/2009, 03:45
Avellaneda
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: como hallar todos los divisores pares de primeros N natural?

Cita:
Iniciado por vdiaz18 Ver Mensaje
SALUDOS ESPERO QUE ESTO TE SIRVA ....

La interfaz tiene 2 textbox y un boton de comando...

Private Sub Command1_Click()
Dim Divisores(10) As Integer
Dim DivisoresPares(10) As Integer
Dim Residuo As Integer
Dim Numero As Integer

Numero = Val(Me.txtNum.Text)
j = 1
For i = 1 To Numero
Residuo = Numero Mod i
If Residuo = 0 Then
Divisores(j) = i
j = j + 1
End If
Next
k = 1
For i = 1 To j - 1
Residuo = Divisores(i) Mod 2
If Residuo = 0 Then
DivisoresPares(k) = Divisores(i)
k = k + 1
End If
Next
'Cargar datos al textbox de respuesta
For i = 1 To k - 1
Me.txtRes.Text = Me.txtRes.Text + Str(DivisoresPares(i))
Next
End Sub
Bueno, el código de vdiaz18 solo funciona si "Numero" es 20, con cualquier otro falla.

Alternativa:

Código:
Private Sub Command1_Click()
Dim Numero As Integer, i As Integer, k As Integer, Pares() As Integer, a() As String

Numero = Val(TxtMax.Text)           ' en txtMax: 20 (o cualquier otro)
a() = Split(txtNumeros.Text, ",")   ' en txtNumeros: 1, 2, 4, 5, 10, 20
ReDim Pares(0)
For i = 0 To UBound(a)
    If Val(a(i)) >= Numero Then Exit For
    If Val(a(i)) Mod 2 = 0 Then
        ReDim Preserve Pares(UBound(Pares) + 1)
        Pares(k) = Val(a(i))
        k = k + 1
    End If
Next i
txtRes = ""
For i = 0 To UBound(Pares) - 1
    txtRes.Text = txtRes.Text & Pares(i) & " "  ' txtRes = 2 4 10 20
Next i
End Sub