Está en la página 1de 4

import java.util.

Scanner;

public class Num {

/**

* Se declara la variable utilizada para guardar la cantidad de números primos encontrados


* durante la ejecución del programa.

*/

static int primesCount = 0;

/**Método principal con el cual se inicializa el programa7

* @param args

*/

public static void main(String[] args) {

/**Se establece el intervalo de números que se va a analizar para saber cuál de


ellos es primo invocando el método RangoPrimos, al cual se le dan el primer y el
último número de un intervalo de números del cual se quiere determinar cuáles de
los números del intervalo son primos.

Si se desea analizar solo un número, se pasa como parámetro inicial y parámetro


final el mismo número, ejemplo: RangoPrimos(3,3).

*/

int a,b;

Scanner Entrada = new Scanner(System.in);

System.out.print("Ingrese el primer número del intervalo:");

a = Entrada.nextInt();

System.out.print("Ingresa el último número del intervalo:");

b = Entrada.nextInt();

RangoPrimos(a,b);

/**Método que se usa para recorrer todos los números de un intervalo para determinar
cuáles de estos son primos.

* @param start - corresponde al primer número del intervalo que se desea analizar.

* @param end - corresponde al último número del intervalo que se desea analizar.

*/
public static void RangoPrimos(int start, int end)

for (int i = start; i != end+1; i++)

/**

*En la variable EsPrimo se guarda el resultado de la operación realizada por el


método EsPrimo el cual determina si el "i" dado como parámetro al método
corresponde a un número primo.

*/

boolean esPrimo = EsPrimo(i);

if(esPrimo)

/**

* Si el número "i" es primo se imprime en consola la posición del número primo


entre los números encontrados hasta el momento (ejemplo: primero(#1), segundo
(#2), tercero (#3), etc.) y al lado se pone el número primo encontrado.

*/

primesCount++;

System.out.println("número(#" + primesCount + "): "+ i);

/**

* Se imprime en consola cual fue el intervalo de números que se analizó en busca de


números primos y abajo de eso se imprime el valor de la cantidad de números primos
encontrados durante la ejecución del programa

*/

System.out.println("Intervalo analizado: ["+ start +","+ end +"]");

System.out.println("Total de números primos encontrados: "+ primesCount);

/**Método para probar si el número que se pasa como parametro es un número primo.
* @param ToCheck - corresponde al número del intervalo que se quiere
comprobar si es un número primo.

*/

public static boolean EsPrimo(int ToCheck)

if (ToCheck == 2) return true; //Si el número por analizar es igual a 2, entonces es


primo y el método devuelve un valor de true

if (ToCheck < 2) return false; //Si el número por analizar es menor que 2, entonces no
es primo y el método devuelve un valor de false

/**Se invoca el método EsImpar dentro de una sentencia if para determinar si el


número por analizar es un número impar

* dado que todos los números primos son impares exceptuando el 2, si el número es
par, el método devuelve un valor de false

* dado que el número no sería primo

*/

if (EsImpar(ToCheck))

/**

* Habiendo determinado que el número es impar se procede a buscar los posibles


múltiplos enteros impares del número comenzando con 3 hasta llegar al número
entero que sea menor al número impar analizado dividido entre 3, dado que ese
es el máximo número impar que al multiplicarse por el menor número primo
diferente de 2 que es 3 nos puede dar como resultado el número que se busca
analizar.

*/

for (int i = 3; i < (ToCheck / 3); i += 2)

/**

* Se analiza si el residuo de dividir el número analizado por "i" es igual a 0, si es así


el número no es primo
* y se continúa analizando el residuo de la división entre el número analizado por
el siguiente número impar hasta culminar el ciclo for, si al final del ciclo ninguno
de los residuos de la división es igual a cero se establece que el número es primo y
el método devuelve un valor de true, de lo contrario devuelve un valor de false.

*/

if (ToCheck % i == 0) return false;

return true;

else return false; // even numbers(excluding 2) are composite

/**Método para probar si el número que se pasa como parametro es un número impar.

* @param ToCheck - corresponde al número que se quiere comprobar si es un


número impar.

*/

public static boolean EsImpar(int ToCheck)

/**

* Si residuo de dividir el número por analizar es diferente a 0 entonces el número


es impar y el método devuelve un valor de true, de lo contrario devuelve un valor
de false

*/

return ((ToCheck % 2 != 0) ? true : false);

También podría gustarte