Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Hurubnar en 24 Febrero 2011, 22:51 pm



Título: [Duda] Sacar números primos de una secuencia
Publicado por: Hurubnar en 24 Febrero 2011, 22:51 pm
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
  1. Private Sub Command1_Click()
  2. Dim n1 As Long
  3. Dim n2 As Long
  4. Dim e As Boolean
  5. Dim i
  6.  
  7.    n1 = Text1.Text
  8.  
  9. While n1 > 0
  10.    e = True
  11.    n2 = n1 - 1
  12.  
  13.    For i = 2 To n2
  14.        If n1 / n2 <> CInt(n1 / n2) Then
  15.            e = False
  16.        End If
  17.    Next i
  18.  
  19.    If e = True Then
  20.        List1.AddItem (n1)
  21.    End If
  22.  
  23.    n1 = n1 - 1
  24. Wend
  25. End Sub

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


Título: Re: [Duda] Sacar números primos de una secuencia
Publicado por: ignorantev1.1 en 24 Febrero 2011, 23:00 pm
Código
  1. Private Sub Command1_Click()
  2. Dim n1 As Long
  3. Dim n2 As Long
  4. Dim e As Boolean
  5. Dim i
  6.  
  7.    n1 = Text1.Text
  8.  
  9. While n1 > 0
  10.    e = True
  11.    n2 = n1 - 1
  12.    i = 2
  13.    While i <= n2 And e '<----- Lo cambie a while para que no siga comprobando despues de saber que el numero no es primo
  14.        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
  15.        i = i + 1
  16.    Wend
  17.  
  18.    If e = True Then
  19.        List1.AddItem (n1)
  20.    End If
  21.  
  22.    n1 = n1 - 1
  23. Wend
  24. End Sub
  25.  
  26.  
;)


Título: Re: [Duda] Sacar números primos de una secuencia
Publicado por: Hurubnar en 25 Febrero 2011, 16:59 pm
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
  1.    If e = True And n1 <> 1 Then

Un saludo,
Herio

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