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)

Logica

Teoria de Automatas (Victor Hugo Montaño)