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

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)