import java.util.Random;
public class SumaPrimos {
public static void main(String[] args) {
Random azar = new Random();
int sumaPrimos = 0;
//Generaremos 30 números al azar entre 0 y 99, mostraremos los primos y los iremos sumando
System.out.println("Primos generados:");
for (int i = 0; i < 30; i++) {
int numero = azar.nextInt(100);
if (esPrimo(numero)) {
System.out.print(numero + " ");
sumaPrimos += numero;
}
}
//Mostramos la suma de primos
System.out.println("\n\nSuma total: " + sumaPrimos);
System.out.println("\n\t\tFIN DE PROGRAMA");
}
/*
* Método para evaluar si un número es primo.
*/
private static boolean esPrimo(int num) {
if (num <= 1)
return false; //1 y menores de 1, no pueden ser primos.
else if (num == 2)
return true; //2 si es primo, es el único PAR que puede serlo
else if (num % 2 == 0)
return false; //Si no es un 2, descartamos el resto de PARES
else {
//A partir de aquí, solo evaluaremos numeros IMPARES.
/*
* Comprobaremos si existe algún divisor para este número,
* a parte del 1 y el propio número.
* Si encontramos algún divisor más, es que no es primo y
* devolvemos "falso"
* Basta con comprobar valores entre 2 y la mitad del número.
* Por ejemplo, si el número es 23, pues buscaremos divisores
* entre el rango de 2 a 11.
*/
for (int divisor = 2; divisor < num/2; divisor++) {
if (num % divisor == 0)
return false;
}
}
//No se han encontrado nuevos divisores, por tanto, es un número primo.
return true;
}
}