Encontrar o MDC em Programação C

CBeginner
Pratique Agora

Introdução

Em programação C, o MDC (Máximo Divisor Comum - Greatest Common Divisor, GCD) é frequentemente calculado. Duas formas diferentes são comumente usadas para encontrar o MDC. Podemos usar o algoritmo de Euclides e calcular o MDC por subtração repetida. Neste laboratório passo a passo, demonstraremos ambos os métodos.

Usando o Algoritmo de Euclides

O algoritmo de Euclides, no qual o numerador é substituído pelo resto da operação de divisão, é usado para calcular o MDC (GCD). Quando o resto se torna zero, o MDC é o numerador.

1.1 Comece a solução declarando uma variável inteira chamada a e b.

    int a, b;

1.2 Em seguida, peça ao usuário para inserir os valores de a e b.

    printf("Enter two numbers: \n");
    scanf("%d %d", &a, &b);

1.3 Então, crie um loop while que roda até que o resto de a dividido por b seja zero.

    while(a!=b)
    {
        if(a>b)
            a=a-b;
        else
            b=b-a;
    }

1.4 Finalmente, exiba o MDC dos dois números.

    printf("The GCD of two numbers is %d", a);

Usando o Método de Subtração Repetida

Neste método, o MDC (GCD) é calculado subtraindo repetidamente o valor menor do valor maior até que eles se tornem iguais. Se ambos se tornarem iguais, então o número é o MDC.

2.1 Comece com uma variável inteira chamada num inicializada com 0.

    int num = 0;

2.2 Declare uma variável inteira chamada x e inicialize-a com 2.

    int x = 2;

2.3 Peça ao usuário para inserir o número de inteiros para encontrar o MDC.

    printf("Enter the number of integers you want to find the GCD of: ");
    scanf("%d", &num);

2.4 Em seguida, peça ao usuário para inserir os números.

    printf("Enter %d numbers:\n", num);
    int arr[num];
    for(int i = 0; i < num; i++)
    {
        scanf("%d", &arr[i]);
    }

2.5 Agora podemos calcular o MDC pegando os valores de entrada e usando o método de subtração repetida. Chamaremos a função gcd() para calcular o MDC dos valores de entrada.

    int result = arr[0];
    for(int i = 1; i < num; i++)
    {
        result = gcd(result, arr[i]);
    }

Combinando os Métodos

Nesta etapa, combinaremos os métodos para completar a implementação.

3.1 Declare uma função gcd() para usar na busca do MDC pelo método de subtração repetida.

    int gcd(int a, int b)
    {
        if(b==0)
            return a;
        else if(a >= b && b > 0)
            return gcd(b,a%b);
        else
            return gcd(b,a);
    }

3.2 Declare uma nova variável chamada gcd_result e inicialize-a com zero.

    int gcd_result = 0;

3.3 Criaremos um novo loop que solicita ao usuário que insira números até que um valor de entrada de 0 seja detectado.

    printf("Enter numbers. To exit enter 0\n");
    while(1)    // infinite loop to take input
    {
        int num;
        scanf("%d", &num);
        if(num < 1)
            break;
        else if(gcd_result == 0)
            gcd_result = num;
        else if(num < gcd_result)
            gcd_result = gcd(num, gcd_result);
        else
            gcd_result = gcd(gcd_result, num);
    }

3.4 Por fim, exiba o resultado final usando a função printf.

    printf("The GCD of all the entered numbers is: %d\n", gcd_result);

Resumo

Neste laboratório, aprendemos dois métodos para calcular o MDC (GCD) de um grupo de inteiros na programação C: o algoritmo de Euclides e o método de subtração repetida. Demonstramos como usar esses métodos com uma explicação detalhada e blocos de código de exemplo. Para maior compreensão, recomenda-se modificar e executar o código no arquivo main.c.