Hola!
Tengo una funcion(hecha por mi) para averiguar si un numero es primo(es un poco "rustico" el metodo para averiguarlo, creo yo, pero funciona bien)
Y ahora la estoy usando en otro programa pero me da resultados "algo" extraños, y no entiendo porque
este es el codigo de la funcion:
Function isPrime(ByVal num As Integer) As Boolean
Dim i As Integer
Dim auxTest As Boolean
Dim auxCriba(9) As Integer
auxCriba(0) = 2
auxCriba(1) = 3
auxCriba(2) = 5
auxCriba(3) = 7
auxCriba(4) = 11
auxCriba(5) = 13
auxCriba(6) = 17
auxCriba(7) = 19
auxCriba(8) = 23
auxCriba(9) = 29
For i = 0 To auxCriba.Length - 1
If num Mod auxCriba(i) = 0 Then
isPrime = False
Else
auxTest = True
End If
Next
Return auxTest
End Function
y este el codigo para hallar los numeros en un intervalo dado(por el usuario):
Sub Main()
Dim Min, Max, maxPrim As Integer
Dim i, j As Integer
Dim Primes() As Integer
Console.Write("Introduce el maximo de primos a mostrar: ")
maxPrim = CInt(Console.ReadLine())
Console.Write("Introduce el minimo del intervalo: ")
Min = CInt(Console.ReadLine())
Console.Write("Introduce el maximo del intervalo: ")
Max = CInt(Console.ReadLine())
Console.WriteLine()
Console.WriteLine()
ReDim Primes(maxPrim-1)
For i = 0 To maxPrim - 1 'este for es para almacenar el numero primo en el array Primes(), en la posicion "i"
For j = Min To Max - 1 'y este recorrre desde el valor minimo hasta el maximo y va comparando si el valor de "j" es un numero primo(deberia)
If isPrime(j) = True Then
Primes(i) = j
End If
Next
Next
Console.Write("Los numero primos entre " & Min & " y " & Max & " son: ")
For i = 0 To Primes.Length - 1
Console.Write(Primes(i) & " ")
Next
Console.ReadLine()
End Sub
Si pruebo(por ejemplo) Con:
-maxPrim = 10
-min = 1
-max = 20
Me devuelve:
19 19 19 19 19 19 19 19 19 19
y.... la verdad no veo porqué...
Por lo que puedo ver, siempre me devuelve el valor de la variable "max" -1, como esta en el 2do for, asi que creo que el error debe estar ahi
Alguien sabe cual es el problema(o al menos la linea)?
Saludos, y gracias a todos los que se tomaron la molestia de leer
pd: si alguna parte del codigo no se entiende o algo, digan y lo explico
pd2: Me olvide de aclarar, uso Visual Basic 2005 Express