Encontrar el Mínimo Común Múltiplo (MCM) en C

CBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderás a encontrar el Mínimo Común Múltiplo (MCM) de dos enteros utilizando el lenguaje de programación C. El laboratorio cubre el proceso paso a paso, comenzando con la lectura de dos enteros desde la entrada del usuario, luego implementando la fórmula MCM = (a*b)/MCD(a,b) para calcular el MCM, y finalmente imprimiendo el resultado. Al final de este laboratorio, tendrás una comprensión sólida de cómo aplicar conceptos de teoría de números, como el algoritmo de Euclides para encontrar el Máximo Común Divisor (MCD), para resolver problemas prácticos en C.

Leer Dos Enteros

En este paso, aprenderás a leer dos enteros desde la entrada del usuario en programación C, que es el primer paso para calcular el Mínimo Común Múltiplo (MCM).

Primero, creemos un nuevo archivo C para nuestro programa de MCM:

cd ~/project
nano lcm.c

Ahora, agrega el siguiente código para leer dos enteros:

#include <stdio.h>

int main() {
    int a, b;

    printf("Ingrese dos enteros positivos:\n");
    printf("Primer número: ");
    scanf("%d", &a);

    printf("Segundo número: ");
    scanf("%d", &b);

    printf("Usted ingresó: %d y %d\n", a, b);

    return 0;
}

Compila y ejecuta el programa:

gcc lcm.c -o lcm
./lcm

Salida de ejemplo:

Ingrese dos enteros positivos:
Primer número: 12
Segundo número: 18
Usted ingresó: 12 y 18

Desglose del código:

  • La función scanf() se utiliza para leer la entrada de enteros del usuario.
  • El especificador de formato %d se utiliza para la entrada de enteros.
  • &a y &b pasan las direcciones de memoria donde se almacenarán los valores de entrada.

Usar LCM = (a*b)/GCD(a,b)

En este paso, implementarás el cálculo del Mínimo Común Múltiplo (MCM) utilizando la fórmula MCM(a,b) = (a*b)/MCD(a,b). Primero crearemos una función para calcular el Máximo Común Divisor (MCD) utilizando el algoritmo de Euclides.

Actualiza el archivo lcm.c con el siguiente código:

#include <stdio.h>

// Función para calcular MCD utilizando el algoritmo de Euclides
int calculateGCD(int a, int b) {
    while (b != 0) {
        int temp = b;
        b = a % b;
        a = temp;
    }
    return a;
}

// Función para calcular MCM
int calculateLCM(int a, int b) {
    return (a * b) / calculateGCD(a, b);
}

int main() {
    int a, b, lcm;

    printf("Ingrese dos enteros positivos:\n");
    printf("Primer número: ");
    scanf("%d", &a);

    printf("Segundo número: ");
    scanf("%d", &b);

    lcm = calculateLCM(a, b);

    printf("El Mínimo Común Múltiplo de %d y %d es: %d\n", a, b, lcm);

    return 0;
}

Compila y ejecuta el programa:

gcc lcm.c -o lcm
./lcm

Salida de ejemplo:

Ingrese dos enteros positivos:
Primer número: 12
Segundo número: 18
El Mínimo Común Múltiplo de 12 y 18 es: 36

Desglose de los componentes clave:

  • calculateGCD() implementa el algoritmo de Euclides para encontrar el Máximo Común Divisor.
  • calculateLCM() utiliza la fórmula MCM(a,b) = (a*b)/MCD(a,b).
  • El algoritmo de Euclides encuentra el MCD de forma eficiente tomando repetidamente el resto.

Imprimir el MCM

En este paso final, ejecutarás el programa de MCM y verificarás su salida para diferentes combinaciones de entrada. Probaremos el programa con varios pares de enteros para demostrar el cálculo del MCM.

Compila el programa (si aún no está compilado):

cd ~/project
gcc lcm.c -o lcm

Ejecuta el programa con diferentes combinaciones de entrada:

./lcm << EOF
12
18
EOF

Salida de ejemplo para 12 y 18:

Ingrese dos enteros positivos:
Primer número: 12
Segundo número: 18
El Mínimo Común Múltiplo de 12 y 18 es: 36

Probemos otro ejemplo:

./lcm << EOF
15
25
EOF

Salida de ejemplo para 15 y 25:

Ingrese dos enteros positivos:
Primer número: 15
Segundo número: 25
El Mínimo Común Múltiplo de 15 y 25 es: 75

Puntos clave a entender:

  • El MCM es el entero positivo más pequeño que es divisible por ambos números de entrada.
  • Para 12 y 18, el MCM es 36.
  • Para 15 y 25, el MCM es 75.
  • El programa utiliza la fórmula MCM(a,b) = (a*b)/MCD(a,b).

Para hacer el programa más robusto, puedes agregar validación de entrada:

nano lcm.c

Actualiza la función main() para incluir validación de entrada:

int main() {
    int a, b, lcm;

    printf("Ingrese dos enteros positivos:\n");
    printf("Primer número: ");
    scanf("%d", &a);

    printf("Segundo número: ");
    scanf("%d", &b);

    // Validación de entrada
    if (a <= 0 || b <= 0) {
        printf("Error: Por favor, ingrese solo enteros positivos.\n");
        return 1;
    }

    lcm = calculateLCM(a, b);

    printf("El Mínimo Común Múltiplo de %d y %d es: %d\n", a, b, lcm);

    return 0;
}

Recompila y prueba el programa actualizado:

gcc lcm.c -o lcm
./lcm

Resumen

En este laboratorio, aprenderás a encontrar el Mínimo Común Múltiplo (MCM) de dos enteros en programación C. Primero, leerás dos enteros de la entrada del usuario. Luego, implementarás la fórmula MCM(a,b) = (a*b)/MCD(a,b) creando una función para calcular el Máximo Común Divisor (MCD) utilizando el algoritmo de Euclides. Finalmente, imprimirás el MCM calculado.

Los puntos clave de aprendizaje son: leer la entrada de enteros usando scanf(), implementar el algoritmo de Euclides para encontrar el MCD y usar la fórmula para calcular el MCM. Al final de este laboratorio, tendrás una comprensión sólida de cómo encontrar el MCM de dos números en C.