Deteccion de Numeros Primos Recursivamente (Java)

 


Problema:

Escribe un proceso recursivo que permita decidir si un numero natural n es primo o no.

Un numero primo es un numero que puede dividirse por si mismo y por 1, es decir posee dos divisores integrales.

Con este concepto en mente podemos realizar el siguiente código:


    public static void main(String[] args) {        
       
       System.out.println(isPrimo(24));
    }
    
    public static boolean isPrimo(int n){
        if (n==1){
            return false;
        }
        return isPrimo(n,n-1);
    }
    public static boolean isPrimo (int n, int m){
        if (m==1){
            return true;
        }else if(n%m==0){
            return false;
        }
        return isPrimo(n,m-1);
    }

Explicación:

El metodo isPrimo (int n) es el metodo principal

  • Si el número es 1, el método devuelve false porque el 1 no se considera un número primo.
  • Si el número es mayor que 1, el método llama a una función sobrecargada isPrimo(n, n - 1) para iniciar la verificación recursiva. La idea es empezar a comprobar si el número es divisible por algún valor desde n - 1 hasta 2 (recorriendo los posibles divisores de mayor a menor).

El método isPrimo (int n, int m) es el metodo donde se realiza la recursion

Explicación:

  • Este método realiza la verificación recursiva de si n es primo, probando si es divisible por valores de m decrecientes.
  • Condición base 1: Si m == 1, significa que el número n no fue divisible por ningún número menor que él, por lo que es primo. El método devuelve true.
  • Condición base 2: Si n % m == 0, significa que el número n es divisible por m (es decir, existe un divisor distinto de 1 y de n), lo que indica que n no es primo. El método devuelve false.
  • Si ninguna de las dos condiciones anteriores se cumple, el método llama recursivamente a sí mismo con el valor de m decreciendo (m - 1), continuando la búsqueda de divisores.


Comentarios

Entradas populares de este blog

Calculo Numérico (Oscar Zabalaga Montaño)

Potencia de un numero programacion recursiva (Java)

Teoria de Automatas (Victor Hugo Montaño)