Hola a todos, hoy os voy a explicar como contar el número de primeros entre dos números en Java.
Puede ser que necesitemos el número de primos que hay entre dos números.
La idea es pedir dos números por teclado e indicar cuantos números primos hay entre esos dos que pidamos. Para ello, recorreremos desde el primer número hasta el segundo número e ir incrementando un contador cuando sea primo.
Para saber si un número es primo o no, tenemos un manual para ello.
Lo primero, como siempre, pediremos lo que necesitemos.
import java.util.Scanner; public class ContarPrimosEntreDosNumeros { public static void main(String[] args) { Scanner sn = new Scanner(System.in); System.out.println("Escribe el primer número 1"); int num1 = sn.nextInt(); System.out.println("Escribe el primer número 2"); int num2 = sn.nextInt(); } }
Necesitaremos rescatar la función para saber si un número es primo o no.
import java.util.Scanner; public class ContarPrimosEntreDosNumeros { public static void main(String[] args) { Scanner sn = new Scanner(System.in); System.out.println("Escribe el primer número 1"); int num1 = sn.nextInt(); System.out.println("Escribe el primer número 2"); int num2 = sn.nextInt(); } public static boolean esPrimo(int numero) { if (numero <= 1) { return false; } int contador = 0; //bucle que cuenta los numeros divisibles for (int i = (int) Math.sqrt(numero); i > 1; i--) { if (numero % i == 0) { contador++; } } return contador < 1; } }
Necesitaremos una variable para ir guardando el número de primos que vayamos contando.
import java.util.Scanner; public class ContarPrimosEntreDosNumeros { public static void main(String[] args) { Scanner sn = new Scanner(System.in); System.out.println("Escribe el primer número 1"); int num1 = sn.nextInt(); System.out.println("Escribe el primer número 2"); int num2 = sn.nextInt(); int contador = 0; } public static boolean esPrimo(int numero) { if (numero <= 1) { return false; } int contador = 0; //bucle que cuenta los numeros divisibles for (int i = (int) Math.sqrt(numero); i > 1; i--) { if (numero % i == 0) { contador++; } } return contador < 1; } }
Después, iremos recorriendo del numero 1 al numero 2 (incluyendo el mismo) e iremos incrementando el contador, si este es primo. Mostramos la variable contador al final.
import java.util.Scanner; public class ContarPrimosEntreDosNumeros { public static void main(String[] args) { Scanner sn = new Scanner(System.in); System.out.println("Escribe el primer número 1"); int num1 = sn.nextInt(); System.out.println("Escribe el primer número 2"); int num2 = sn.nextInt(); int contador = 0; for (int i = num1; i <= num2; i++) { if (esPrimo(i)) { contador++; } } System.out.println("El número de primos es de " + contador); } public static boolean esPrimo(int numero) { if (numero <= 1) { return false; } int contador = 0; //bucle que cuenta los numeros divisibles for (int i = (int) Math.sqrt(numero); i > 1; i--) { if (numero % i == 0) { contador++; } } return contador < 1; } }
Al pedir dos números, puede pasar que el numero 2 sea menor que el numero 1, entonces haremos un intercambio de variables para evitar esta situación.
import java.util.Scanner; public class ContarPrimosEntreDosNumeros { public static void main(String[] args) { Scanner sn = new Scanner(System.in); System.out.println("Escribe el primer número 1"); int num1 = sn.nextInt(); System.out.println("Escribe el primer número 2"); int num2 = sn.nextInt(); if (num2 < num1) { int aux = num1; num1 = num2; num2 = aux; } int contador = 0; for (int i = num1; i <= num2; i++) { if (esPrimo(i)) { contador++; } } System.out.println("El número de primos es de " + contador); } public static boolean esPrimo(int numero) { if (numero <= 1) { return false; } int contador = 0; //bucle que cuenta los numeros divisibles for (int i = (int) Math.sqrt(numero); i > 1; i--) { if (numero % i == 0) { contador++; } } return contador < 1; } }
Este es el resultado:
Os dejo también la versión en función para que lo reutilicéis en otros proyectos.
public static int cuentaPrimosEntre(int minimo, int maximo) { if (maximo < minimo) { int aux = minimo; minimo = maximo; maximo = aux; } int contador = 0; for (int i = minimo; i <= maximo; i++) { if (esPrimo(i)) { contador++; } } return contador; }
Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.
Deja una respuesta