[Duda] Sacar números primos de una secuencia

Iniciado por Hurubnar, 24 Febrero 2011, 22:51 PM

0 Miembros y 1 Visitante están viendo este tema.

Hurubnar

Buenas;
Bien, pues estoy intentando hacer un código simple que muestre los números primos hasta un límite marcado por el usuario. No me interesan códigos que hagan esto, ya encontré una que funciona al 100%, la cuestión es que no logro ver qué falla en mi código... Sé que es muy fácil, pero llevo rato (y demasiado) intentado resolverlo.

Suponiendo que tengo un List1 (donde se mostrarán los números primos de la secuencia), un TextBox (aquí el usuario pondrá el número límite) y un Command1 (el cual realizará la acción al cliquear en él).

Código (vb) [Seleccionar]
Private Sub Command1_Click()
Dim n1 As Long
Dim n2 As Long
Dim e As Boolean
Dim i

    n1 = Text1.Text

While n1 > 0
    e = True
    n2 = n1 - 1

    For i = 2 To n2
        If n1 / n2 <> CInt(n1 / n2) Then
            e = False
        End If
    Next i
   
    If e = True Then
        List1.AddItem (n1)
    End If
   
    n1 = n1 - 1
Wend
End Sub


Le estaría muy agradecido a quien pudiera señalarme el fallo,
Gracias de antemano, un saludo
Herio

ignorantev1.1

#1
Código (vb) [Seleccionar]

Private Sub Command1_Click()
Dim n1 As Long
Dim n2 As Long
Dim e As Boolean
Dim i

   n1 = Text1.Text

While n1 > 0
   e = True
   n2 = n1 - 1
   i = 2
   While i <= n2 And e '<----- Lo cambie a while para que no siga comprobando despues de saber que el numero no es primo
       If n1 Mod i = 0 Then e = False '<----- el error, no se por que pero aqui era, no tengo mucho tiempo ya que me estan informando que ya estan listas las tortillas de harina
       i = i + 1
   Wend

   If e = True Then
       List1.AddItem (n1)
   End If

   n1 = n1 - 1
Wend
End Sub


;)

Hurubnar

Gracias ignorantev1.1, me sirvieron mucho tus aclaraciones...

Lo único que cambie será el último If (para que no me salga el uno)
Código (vb) [Seleccionar]
    If e = True And n1 <> 1 Then

Un saludo,
Herio

PD Espero que las tortillas de harina estuvieran buenas...  :rolleyes: