Factores Primos de un numero programacion recursiva (Java)
Problema:
Se desea encontrar los factores primos de un numero n.
para resolver este problema se realizo el siguiente código:
public static void main(String[] args) {
factoresPrimos(13);
}
public static void factoresPrimos(int n){
if (n<=1){
return ;
}else if( isPrimo(n)){
System.out.println(n);
return;
}
factoresPrimos(2,n);
}
public static void factoresPrimos(int inicio,int objetivo){
if (inicio==objetivo){
return;
}
if(objetivo%inicio==0&& isPrimo(inicio)){
System.out.println(inicio);
}
factoresPrimos(inicio+1,objetivo);
}
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);
}
Este código en Java tiene como objetivo encontrar y mostrar los factores primos de un número dado. Utiliza una combinación de recursión y una función para verificar si un número es primo.
El método factoresPrimos(int n)
Explicación:
- Condición base 1: Si n <= 1, no hace nada y simplemente termina (no existen factores primos para números menores o iguales a 1).
- Condición base 2: Si el número n es primo (usando la función isPrimo), imprime el número porque un número primo es su propio factor primo, y luego termina la ejecución.
- Si n no es primo, llama a la función factoresPrimos(2, n) para encontrar los factores primos comenzando desde 2.
El método factoresPrimos(int inicio, int objetivo)
Explicación:- Condición base: Si inicio es igual al objetivo, la función termina. Esto significa que hemos recorrido todos los posibles divisores menores que objetivo.
- Si objetivo % inicio == 0, significa que inicio es un divisor de objetivo. Además, si inicio es primo (verificado con isPrimo(inicio)), imprime el número porque es un factor primo.
- La función se llama recursivamente con inicio + 1, avanzando para verificar el siguiente número como posible divisor de objetivo.
El método isPrimo (int n) este método verifica si un número es primo o no
El método isPrimo (int n, int m) esta es la función recursiva que comprueba si un número
n
es divisible por algún número menor que
n
:Explicación:
- Condición base: Si m == 1, significa que el número no tiene divisores entre n - 1 y 2, por lo que es primo, y devuelve true.
- Si n % m == 0, significa que n es divisible por m, por lo que no es primo, y devuelve false.
- Si ninguna de las condiciones anteriores se cumple, llama recursivamente a isPrimo(n, m - 1) para continuar verificando si hay otros divisores.
Comentarios
Publicar un comentario