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 dem
decrecientes. - Condición base 1: Si
m == 1
, significa que el númeron
no fue divisible por ningún número menor que él, por lo que es primo. El método devuelvetrue
. - Condición base 2: Si
n % m == 0
, significa que el númeron
es divisible porm
(es decir, existe un divisor distinto de 1 y den
), lo que indica quen
no es primo. El método devuelvefalse
. - 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
Publicar un comentario