Número primo en Java

Comprobar si un número es primo en java

Programa que determine si un número es primo. El programa solicita a usuario que introduzca un número entero positivo y calcula y muestra si el número introducido es primo o no lo es.

Un número es primo si tiene exactamente dos divisores distintos: el 1 y el propio número. Según esta definición el 1 no es primo ya que únicamente tiene un divisor que es el propio número.

Ejemplos de números primos son el 2, 3, 5, 7, 11, etc.

El programa mostrará por pantalla si el número es primo o no. Por ejemplo, si se introduce 1 el programa mostrará que no es primo. Si se introduce 23 el programa mostrará que es primo.

Solución:

Podemos comprobar si el número introducido es primo o no dividiendo el número entre todos los valores desde 2 hasta el número - 1 y comprobar si el número es divisible por alguno de esos números. En caso de que sea divisible el número no es primo.

Si por ejemplo el número introducido es 6, la idea es dividir el 6 entre 2, 3, 4, 5 y si el número es divisible por alguno de estos valores entonces no es primo. En este caso la primera división 6 / 2 da de resto 0 por lo que el número es divisible por 2 y por lo tanto no es primo.

Para realizar las divisiones del número estre sus posibles divisores se va a utilizar un bucle while. Dentro del bucle se comprobará si el número es divisible por 2, por 3, por 4, etc. El while termina cuando se encuentra un divisor o cuando se divide por el propio número.  

Cuando finaliza el while se comprueba si ha finalizado porque se ha dividido por el propio número, en este caso el número es primo. Si el while finaliza porque se ha encontrado otro divisor distinto al propio número entonces el número no es primo.

Este método no es el más eficiente para comprobar si un número es primo pero solo se trata de realizar un ejercicio de programación en el que aplicar el uso de bucles.

/*
 * Programa que lea un número entero positivo N e indique si es primo. 
 * Un número es primo si solo es divisible por 1 y por él mismo.
 */

import java.util.Scanner;

public class NumeroPrimoJava {

    public static void main(String[] args) {
        int n, i;
        Scanner sc = new Scanner(System.in);
		
        do {
            System.out.print("Introduce un numero >0: ");
            n = sc.nextInt();
        } while (n <= 0);
		
        if (n == 1) {  //el 1 no es primo
            System.out.println("No es primo");
        } else {
            i = 2;    //i es el divisor
            while (n % i != 0) {  //mientras el número no sea divisible por el divisor                            
                i++;
            }
            if (i == n) { //cuando sale del while, si el divisor es el propio número    
                System.out.println("Primo");        //el número es primo
            } else {
                System.out.println("No es primo");  //sino no lo es
            }
        }
    }
}

1 comentario:

  1. Muchas gracias por un articulo tan detallado sobre este tema, me ha sido de gran utilidad

    ResponderEliminar