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:
Código
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):
Código
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:
Código:
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