Encontrar o Mínimo Múltiplo Comum (MMC) em C

CBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá a encontrar o Mínimo Múltiplo Comum (MMC) de dois inteiros usando a linguagem C. O laboratório cobre o processo passo a passo, começando com a leitura de dois inteiros da entrada do usuário, depois implementando a fórmula MMC = (a*b)/MDC(a,b) para calcular o MMC, e, finalmente, imprimindo o resultado. Ao final deste laboratório, você terá uma compreensão sólida de como aplicar conceitos de teoria dos números, como o algoritmo de Euclides para encontrar o Máximo Divisor Comum (MDC), para resolver problemas práticos em C.

Ler Dois Inteiros

Neste passo, você aprenderá como ler dois inteiros da entrada do usuário em programação C, que é o primeiro passo no cálculo do Mínimo Múltiplo Comum (MMC).

Primeiro, vamos criar um novo arquivo C para nosso programa MMC:

cd ~/project
nano lcm.c

Agora, adicione o seguinte código para ler dois inteiros:

#include <stdio.h>

int main() {
    int a, b;

    printf("Digite dois inteiros positivos:\n");
    printf("Primeiro número: ");
    scanf("%d", &a);

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

    printf("Você digitou: %d e %d\n", a, b);

    return 0;
}

Compile e execute o programa:

gcc lcm.c -o lcm
./lcm

Exemplo de saída:

Digite dois inteiros positivos:
Primeiro número: 12
Segundo número: 18
Você digitou: 12 e 18

Vamos analisar o código:

  • A função scanf() é usada para ler a entrada de inteiro do usuário.
  • O especificador de formato %d é usado para entrada de inteiro.
  • &a e &b passam os endereços de memória onde os valores de entrada serão armazenados.

Usar MMC = (a*b)/MDC(a,b)

Neste passo, você implementará o cálculo do Mínimo Múltiplo Comum (MMC) usando a fórmula MMC(a,b) = (a*b)/MDC(a,b). Primeiro, criaremos uma função para calcular o Máximo Divisor Comum (MDC) usando o algoritmo de Euclides.

Atualize o arquivo lcm.c com o seguinte código:

#include <stdio.h>

// Função para calcular MDC usando o algoritmo de Euclides
int calculateGCD(int a, int b) {
    while (b != 0) {
        int temp = b;
        b = a % b;
        a = temp;
    }
    return a;
}

// Função para calcular MMC
int calculateLCM(int a, int b) {
    return (a * b) / calculateGCD(a, b);
}

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

    printf("Digite dois inteiros positivos:\n");
    printf("Primeiro número: ");
    scanf("%d", &a);

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

    mmc = calculateLCM(a, b);

    printf("O Mínimo Múltiplo Comum de %d e %d é: %d\n", a, b, mmc);

    return 0;
}

Compile e execute o programa:

gcc lcm.c -o lcm
./lcm

Exemplo de saída:

Digite dois inteiros positivos:
Primeiro número: 12
Segundo número: 18
O Mínimo Múltiplo Comum de 12 e 18 é: 36

Vamos analisar os componentes-chave:

  • calculateGCD() implementa o algoritmo de Euclides para encontrar o Máximo Divisor Comum.
  • calculateLCM() usa a fórmula MMC(a,b) = (a*b)/MDC(a,b).
  • O algoritmo de Euclides encontra o MDC eficientemente repetindo o cálculo do resto.

Print the LCM

In this final step, you will run the LCM program and verify its output for different input combinations. We'll test the program with various integer pairs to demonstrate the LCM calculation.

Compile the program (if not already compiled):

cd ~/project
gcc lcm.c -o lcm

Run the program with different input combinations:

./lcm << EOF
12
18
EOF

Example output for 12 and 18:

Enter two positive integers:
First number: 12
Second number: 18
The Least Common Multiple of 12 and 18 is: 36

Let's try another example:

./lcm << EOF
15
25
EOF

Example output for 15 and 25:

Enter two positive integers:
First number: 15
Second number: 25
The Least Common Multiple of 15 and 25 is: 75

Key points to understand:

  • The LCM is the smallest positive integer that is divisible by both input numbers
  • For 12 and 18, the LCM is 36
  • For 15 and 25, the LCM is 75
  • The program uses the formula LCM(a,b) = (a*b)/GCD(a,b)

To make the program more robust, you can add input validation:

nano lcm.c

Update the main() function to include input validation:

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

    printf("Enter two positive integers:\n");
    printf("First number: ");
    scanf("%d", &a);

    printf("Second number: ");
    scanf("%d", &b);

    // Input validation
    if (a <= 0 || b <= 0) {
        printf("Error: Please enter positive integers only.\n");
        return 1;
    }

    lcm = calculateLCM(a, b);

    printf("The Least Common Multiple of %d and %d is: %d\n", a, b, lcm);

    return 0;
}

Recompile and test the updated program:

gcc lcm.c -o lcm
./lcm

Imprimir o MMC

Neste passo final, você executará o programa MMC e verificará sua saída para diferentes combinações de entrada. Testaremos o programa com vários pares de inteiros para demonstrar o cálculo do MMC.

Compile o programa (se ainda não compilado):

cd ~/project
gcc lcm.c -o lcm

Execute o programa com diferentes combinações de entrada:

./lcm << EOF
12
18
EOF

Exemplo de saída para 12 e 18:

Digite dois inteiros positivos:
Primeiro número: 12
Segundo número: 18
O Mínimo Múltiplo Comum de 12 e 18 é: 36

Vamos tentar outro exemplo:

./lcm << EOF
15
25
EOF

Exemplo de saída para 15 e 25:

Digite dois inteiros positivos:
Primeiro número: 15
Segundo número: 25
O Mínimo Múltiplo Comum de 15 e 25 é: 75

Pontos-chave a entender:

  • O MMC é o menor inteiro positivo que é divisível por ambos os números de entrada.
  • Para 12 e 18, o MMC é 36.
  • Para 15 e 25, o MMC é 75.
  • O programa usa a fórmula MMC(a,b) = (a*b)/MDC(a,b).

Para tornar o programa mais robusto, você pode adicionar validação de entrada:

nano lcm.c

Atualize a função main() para incluir validação de entrada:

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

    printf("Digite dois inteiros positivos:\n");
    printf("Primeiro número: ");
    scanf("%d", &a);

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

    // Validação de entrada
    if (a <= 0 || b <= 0) {
        printf("Erro: Por favor, digite apenas inteiros positivos.\n");
        return 1;
    }

    mmc = calculateLCM(a, b);

    printf("O Mínimo Múltiplo Comum de %d e %d é: %d\n", a, b, mmc);

    return 0;
}

Recompile e teste o programa atualizado:

gcc lcm.c -o lcm
./lcm