Cálculo recursivo del MCM

CCBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, escribiremos un programa en C para encontrar el MCM (Mínimo Común Múltiplo) de dos números usando recursividad. El MCM es el entero positivo más pequeño que es divisible por ambos números sin dejar ningún residuo.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c(("C")) -.-> c/FunctionsGroup(["Functions"]) c(("C")) -.-> c/FileHandlingGroup(["File Handling"]) c(("C")) -.-> c/BasicsGroup(["Basics"]) c/BasicsGroup -.-> c/variables("Variables") c/BasicsGroup -.-> c/operators("Operators") c/FunctionsGroup -.-> c/function_declaration("Function Declaration") c/FunctionsGroup -.-> c/function_parameters("Function Parameters") c/FunctionsGroup -.-> c/math_functions("Math Functions") c/FunctionsGroup -.-> c/recursion("Recursion") c/FileHandlingGroup -.-> c/create_files("Create Files") c/UserInteractionGroup -.-> c/user_input("User Input") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/variables -.-> lab-123279{{"Cálculo recursivo del MCM"}} c/operators -.-> lab-123279{{"Cálculo recursivo del MCM"}} c/function_declaration -.-> lab-123279{{"Cálculo recursivo del MCM"}} c/function_parameters -.-> lab-123279{{"Cálculo recursivo del MCM"}} c/math_functions -.-> lab-123279{{"Cálculo recursivo del MCM"}} c/recursion -.-> lab-123279{{"Cálculo recursivo del MCM"}} c/create_files -.-> lab-123279{{"Cálculo recursivo del MCM"}} c/user_input -.-> lab-123279{{"Cálculo recursivo del MCM"}} c/output -.-> lab-123279{{"Cálculo recursivo del MCM"}} end

Comprender el concepto de MCM

Antes de comenzar con la programación, comprendamos el concepto de MCM. El MCM de dos enteros es el entero positivo más pequeño que es múltiplo de ambos números. Para encontrar el MCM de dos números, podemos usar la siguiente fórmula:

MCM = (número1 * número2) / MCD

Donde número1 y número2 son los dos números para los cuales necesitamos encontrar el MCM y MCD es el Máximo Común Divisor de los dos números.

Crear un nuevo archivo C

Vamos a crear un nuevo archivo C llamado main.c en el directorio ~/proyecto/ donde escribiremos nuestro programa.

Escribir el código

Copie y pegue el siguiente código en el archivo main.c.

#include<stdio.h>

int find_lcm(int, int); // declaración del prototipo de función

int main()
{
    int a, b, lcm;
    printf("Ingrese dos enteros para encontrar el MCM:\n");
    scanf("%d %d", &a, &b);
    lcm = find_lcm(a, b); // llamada a la función
    printf("El MCM de %d y %d es %d.\n", a, b, lcm);

    return 0;
}

int find_lcm(int a, int b) // definición de la función
{
    static int temp = 1;
    if(temp % a == 0 && temp % b == 0)
        return temp;
    else
    {
        temp++;
        find_lcm(a, b);
        return temp;
    }
}

Compilar y ejecutar el programa

Guarde el archivo main.c y compile el programa usando el siguiente comando en la terminal:

gcc main.c -o main

Ejecute el programa usando el siguiente comando:

./main

Ingrese dos enteros cuando se le solicite y el programa mostrará el MCM de los dos números.

Comprender el código

Vamos a entender el código que acabamos de escribir.

  • Primero incluimos la biblioteca de entrada y salida estándar en nuestro programa usando #include<stdio.h>.
  • Declaramos el prototipo de la función find_lcm que definiremos más adelante en nuestro programa. Esto es necesario porque estamos llamando a la función find_lcm en nuestra función principal antes de su definición real.
  • En la función principal, declaramos tres variables enteras a, b y lcm.
  • Pedimos al usuario que ingrese dos enteros usando printf y aceptamos la entrada usando scanf.
  • Luego llamamos a la función find_lcm y le pasamos a y b como argumentos.
  • La función find_lcm toma dos argumentos enteros a y b y devuelve el MCM de los dos números usando recursividad.
  • Inicializamos una variable estática temp a 1, que contendrá el valor actual que estamos comprobando para ver si es múltiplo.
  • En cada recursión, comprobamos si temp es múltiplo de tanto a como b.
  • Si es múltiplo, devolvemos temp como el MCM.
  • Si no es múltiplo, incrementamos temp y llamamos recursivamente a la función find_lcm hasta que encontremos el MCM.

Prueba el programa

Prueba el programa con diferentes valores de entrada y verifica que produzca la salida correcta del MCM.

Código completo

Aquí está el código completo del programa en C para encontrar el MCM de dos números usando recursividad:

#include<stdio.h>

int find_lcm(int, int); // declaración del prototipo de función

int main()
{
    int a, b, lcm;
    printf("Ingrese dos enteros para encontrar el MCM:\n");
    scanf("%d %d", &a, &b);
    lcm = find_lcm(a, b); // llamada a la función
    printf("El MCM de %d y %d es %d.\n", a, b, lcm);

    return 0;
}

int find_lcm(int a, int b) // definición de la función
{
    static int temp = 1;
    if(temp % a == 0 && temp % b == 0)
        return temp;
    else
    {
        temp++;
        find_lcm(a, b);
        return temp;
    }
}

Resumen

En este laboratorio, aprendimos cómo escribir un programa en C para encontrar el MCM de dos números usando recursividad. Utilizamos una función recursiva para encontrar el MCM y explicamos cada paso del programa en detalle. También aprendimos cómo compilar y ejecutar un programa en C usando la terminal.