Generación de números primos

El siguiente extracto de código genera los números primos que existan hasta un número límite que se marca como parámetro. Se ha codificado como un método para que pueda ser reutilizado, por ejemplo añadiéndolo a la librería de operaciones matemáticas que se presentaba en la entrada Como saber si un número es par o impar

public static int[] generarNumerosPrimos(int max) {
if (max < 2) {
return new int[0];
}
else {
boolean[] booleanArrayTmp = new boolean[max + 1];
 
for (int i = 2; i < booleanArrayTmp.length; i++) {
booleanArrayTmp[i] = false;
}
 
int limit = (int)Math.sqrt(booleanArrayTmp.length);
 
for (int i = 2; i <= limit; i++) {
if (!booleanArrayTmp[i]) {
for (int multiple = 2 * i; multiple < booleanArrayTmp.length;
multiple += i) {
 
booleanArrayTmp[multiple] = true;
}
}
}
 
int tmpInt = 0;
 
for (int i = 2; i < booleanArrayTmp.length; i++) {
if (!booleanArrayTmp[i]) {
tmpInt++;
}
}
 
int[] resultado = new int[tmpInt];
 
for (int i = 2, j = 0; i < booleanArrayTmp.length; i++) {
if (!booleanArrayTmp[i]) {
resultado[j++] = i;
}
}
 
return resultado;
}
}

Deje una respuesta

Se debe registrar para escribir un comentario.