Hola a todos, llevo unos días devanándome lo sesos con algo tan basico como hallar números primos usando un bucle While. El caso es que tengo hallar 25 números y no doy con la que sería la forma más optimizada. He visto que calcular la raíz cuadrada de un número y probar a dividirlo por los primos menores a ese resultado nos determinaría si es primo o no. Como siempre la teoría es sencilla, pero llevarlo al código no tanto.
He probado algo así:
int i = 2; int contador = 0;
while (contador<25){
if(i%2 == 0){ //Aquí desecharía los múltiplos de dos, pero 2 es primo. Primer fallo. i++; }
for(int j = 3; j<=i; j+=2){ //Aquí incluyo un for para ir probando divisores. if(i%j == 0){
Hola a todos, llevo unos días devanándome lo sesos con algo tan basico como hallar números primos usando un bucle While. El caso es que tengo hallar 25 números y no doy con la que sería la forma más optimizada. He visto que calcular la raíz cuadrada de un número y probar a dividirlo por los primos menores a ese resultado nos determinaría si es primo o no. Como siempre la teoría es sencilla, pero llevarlo al código no tanto.
He probado algo así:
int i = 2;
int contador = 0;
while (contador<25){
if(i%2 == 0){ //Aquí desecharía los múltiplos de dos, pero 2 es primo. Primer fallo.
i++;
}
for(int j = 3; j<=i; j+=2){ //Aquí incluyo un for para ir probando divisores.
if(i%j == 0){
}
}
System.out.println(i); //
i++;
contador++;
}
}
}
Esto imprime lo siguiente:
1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49,51
Obtengo bastantes números primos, pero no llego a obtener lo que busco.
A ver si alguien pudiese echarme una mano.
Muchas gracias.