Java Programa para imprimir Prime Numbers de 1 a 100

⚡ Resumen inteligente

Programa para imprimir números primos del 1 al 100 en Java Analiza todos los valores de un rango y muestra aquellos con exactamente dos divisores. Este artículo explica la definición, el método de verificación, el programa completo, la criba de Eratóstenes y una comparación de rendimiento con resultados verificados.

  • 🔢 Regla de definición: Un número primo es mayor que 1 y divisible solo por 1 y por sí mismo, lo que excluye por completo el 0 y el 1.
  • 🔁 Escaneo de rango: Un bucle externo recorre el valor desde 2 hasta el límite superior y delega cada valor a un método de comprobación reutilizable.
  • Método booleano: CheckPrime devuelve falso si encuentra el primer divisor y verdadero si el bucle finaliza sin encontrar ninguna coincidencia.
  • Divisor Bound: Probar hasta la mitad del valor es correcto y detenerseping El cálculo de la raíz cuadrada produce el mismo resultado mucho más rápido.
  • 🧮 Conjunto de resultados: Entre 1 y 100 existen exactamente 25 números primos, el último de los cuales es 97.
  • Método del tamizado: La criba de Eratóstenes marca los múltiplos en una matriz booleana y se ejecuta en un tiempo de O(n log log n).
  • 🧪 Práctica de verificación: Confirme que el elemento 2 está incluido y que el elemento 1 está excluido antes de confiar en cualquier implementación.

Prima Numbers 1 a 100 en Java

¿Qué es un número primo?

A Número primo Un número primo es aquel que solo es divisible por uno o por sí mismo. Es un número natural mayor que uno que no es producto de dos números naturales menores. Por ejemplo, 11 solo es divisible por uno o por sí mismo. Otros números primos son 2, 3, 5, 7, 11, 13, 17, etc.

Nota: 0 y 1 no son números primos. 2 es el único número primo par.

Entre 1 y 100 hay exactamente 25 números primos. La cuadrícula que se muestra a continuación los agrupa por décadas, lo que permite apreciar cómo disminuye el número de primos a medida que aumenta la cantidad de primos.

Autonomía Prima Numbers Contar
1 – 20 2, 3, 5, 7, 11, 13, 17, 19 8
21 – 40 23, 29, 31, 37 4
41 – 60 41, 43, 47, 53, 59 5
61 – 80 61, 67, 71, 73, 79 5
81 – 100 83, 89, 97 3

Cómo imprimir Prime Numbers Entre 1 y 100 Programa en Java

abajo esta el Java Programa para imprimir números primos del 1 al 100:

Lógica del programa:

  • El método principal de la programa de números primos en Java Contiene un bucle para comprobar uno por uno los números primos entre 1 y 100.
  • El método principal llama al método. CheckPrime para determinar si un número es un número primo en Java o no.
  • Necesitamos dividir un número dado, por ejemplo 17, entre los valores del 2 al 17 y comprobar el resto. Si el resto es 0, el número no es primo.
  • Ningún número es divisible por más de la mitad de sí mismo. Por lo tanto, debemos iterar sobre numberToCheck/2. Si la entrada es 17, la mitad es 8.5, y el bucle iterará sobre los valores del 2 al 8.
  • If numberToCheck Si es totalmente divisible por otro número, devolvemos falso y el bucle se rompe.
  • If numberToCheck es primo, devolvemos verdadero.
  • En el método principal para números primos del 1 al 100 en Java, comprueba si isPrime es TRUE y sumar el valor al primoNumbersCadena encontrada.
  • Por último, imprima los números primos del 1 al 100 en Java.

Separar la comprobación en un método independiente es lo que permite reutilizar el programa. El mismo método CheckPrime puede llamarse con cualquier límite superior simplemente cambiando la variable maxCheck.

public class PrimeNumbers {

    public static void main(String[] args) {

        int i;
        int num = 0;
        int maxCheck = 100; // maxCheck limit till which you want to find prime numbers
        boolean isPrime = true;

        //Empty String
        String primeNumbersFound = "";

        //Start loop 2 to maxCheck
        for (i = 2; i <= maxCheck; i++) {
            isPrime = CheckPrime(i);
            if (isPrime) {
                primeNumbersFound = primeNumbersFound + i + " ";
            }
        }
        System.out.println("Prime numbers from 1 to " + maxCheck + " are:");
        // Print prime numbers from 1 to maxCheck
        System.out.println(primeNumbersFound);
    }
    public static boolean CheckPrime(int numberToCheck) {
        int remainder;
        for (int i = 2; i <= numberToCheck / 2; i++) {
            remainder = numberToCheck % i;
            //if remainder is 0 then the number is not prime and we break the loop. Else continue the loop
            if (remainder == 0) {
                return false;
            }
        }
        return true;

    }

}

Rendimiento esperado:

La salida del número primo entre 1 y 100 en el Java programa será:

Prime numbers from 1 to 100 are:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

El valor 2 pasa porque se cumple la condición del bucle interno. i <= 2 / 2 evalúa a 2 <= 1, lo cual es falso de inmediato, por lo que el método devuelve verdadero sin una sola división.

Versión optimizada utilizando el límite de la raíz cuadrada

Dividir hasta la mitad del número es correcto, pero implica un trabajo innecesario. Los divisores siempre aparecen en pares alrededor de la raíz cuadrada, por lo que cualquier factor mayor que √n tiene un divisor menor que ya se ha comprobado.

public class PrimeNumbersOptimized {

    public static void main(String[] args) {
        int maxCheck = 100;
        int count = 0;
        StringBuilder result = new StringBuilder();

        for (int i = 2; i <= maxCheck; i++) {
            if (isPrime(i)) {
                result.append(i).append(" ");
                count++;
            }
        }

        System.out.println("Prime numbers from 1 to " + maxCheck + " are:");
        System.out.println(result.toString().trim());
        System.out.println("Total primes found: " + count);
    }

    public static boolean isPrime(int n) {
        if (n <= 1) return false;
        if (n == 2) return true;
        if (n % 2 == 0) return false;

        // test only odd divisors up to the square root
        for (int i = 3; i * i <= n; i += 2) {
            if (n % i == 0) return false;
        }
        return true;
    }
}

Salida:

Prime numbers from 1 to 100 are:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
Total primes found: 25

💡 Consejo: StringBuilder reemplaza la concatenación repetida de cadenas dentro del bucle. Cada += Al usar una cadena de caracteres, se crea un nuevo objeto, que se vuelve medible una vez que el límite superior alcanza varios miles.

Imprimir Prime Numbers Utilizando el tamiz de Eratóstenes

Cuando se necesitan todos los números primos de un rango, la división por tanteo no es la herramienta adecuada. La criba de Eratóstenes crea una matriz booleana, marca los múltiplos de cada primo como compuestos y descarta lo que queda sin marcar.

El método funciona en tres pasos:

  1. Crea una matriz booleana de tamaño n+1 y asume que cada índice a partir del 2 es primo.
  2. A partir del 2, marca cada múltiplo del primo actual como compuesto.
  3. Avanza al siguiente índice sin marcar y repite el proceso hasta que se haya superado la raíz cuadrada de n.
import java.util.Arrays;

public class SieveOfEratosthenes {

    public static void main(String[] args) {
        int n = 100;
        boolean[] composite = new boolean[n + 1];

        for (int p = 2; p * p <= n; p++) {
            if (!composite[p]) {
                // start at p*p because smaller multiples are already marked
                for (int multiple = p * p; multiple <= n; multiple += p) {
                    composite[multiple] = true;
                }
            }
        }

        StringBuilder result = new StringBuilder();
        for (int i = 2; i <= n; i++) {
            if (!composite[i]) {
                result.append(i).append(" ");
            }
        }

        System.out.println("Prime numbers from 1 to " + n + " are:");
        System.out.println(result.toString().trim());
    }
}

Salida:

Prime numbers from 1 to 100 are:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

Comparación de los tres enfoques

Los tres programas imprimen los mismos 25 valores, por lo que la elección depende completamente del tamaño del rango.

Nuevo enfoque Complejidad de tiempo Memoria adicional Mejores Gama
División de prueba a n/2 O (n²) O (1) Hasta unos pocos miles
División de prueba a √n O(n√n) O (1) Hasta unos cientos de miles
Tamiz de Eratóstenes O(n log log n) O (n) Millones de valores

Consulta nuestro programa para encontrar números primos a partir de cualquier número de entrada cuando se debe probar un solo valor en lugar de un rango. Para más ejercicios basados ​​en bucles, revise el Serie de Fibonacci en Java, Java programa de palíndromos, y Bubble Ordenar algoritmo en JavaEl array booleano utilizado por la criba se explica con más detalle en Java arrays.

Preguntas Frecuentes

Hay exactamente 25. La secuencia comienza en 2 y termina en 97, y la densidad disminuye de forma constante a medida que los valores aumentan.

La condición del bucle interno se convierte en 2 <= 1, lo cual es falso inmediatamente, por lo que no se realiza ninguna división y el método devuelve verdadero. Vale la pena probar ese caso en particular en cada implementación.

Cambia la variable maxCheck a 500. Para que empiece por encima de 1, ajusta el valor inicial del contador del bucle externo y deja el método de comprobación sin modificar.

Cada múltiplo menor de p ya contiene un factor primo menor y fue marcado en una pasada anterior. Comenzar con p al cuadrado evita repetir ese trabajo.

Por lo general, devuelven la división de prueba a menos que la solicitud mencione un rango o rendimiento amplio. Indicar el límite superior en la solicitud suele generar la división de prueba.

Los números primos se eligen como tamaños de tabla hash y de cubeta de características porque distribuyen las claves de manera uniforme y reducen las colisiones. También sirven como semilla para las funciones hash utilizadas en la vectorización de características.

Resumir este post con: