Exemplos de maneiras diferentes de calcular GCD de dois inteiros (para inteiros positivos e negativos) usando loops e instruções de tomada de decisão.
Para entender este exemplo, você deve ter conhecimento dos seguintes tópicos de programação C:
- Operadores de programação C
- C para Loop
- Declaração C if … else
- C while e do … while Loop
O HCF ou GCD de dois inteiros é o maior inteiro que pode dividir exatamente os dois números (sem resto).
Existem muitas maneiras de encontrar o maior divisor comum na programação C.
Exemplo # 1: GCD usando loop for e instrução if
#include int main() ( int n1, n2, i, gcd; printf("Enter two integers: "); scanf("%d %d", &n1, &n2); for(i=1; i <= n1 && i <= n2; ++i) ( // Checks if i is factor of both integers if(n1%i==0 && n2%i==0) gcd = i; ) printf("G.C.D of %d and %d is %d", n1, n2, gcd); return 0; )
Neste programa, dois inteiros inseridos pelo usuário são armazenados nas variáveis n1 e n2.Então, o for
loop é iterado até que i seja menor que n1 e n2.
Em cada iteração, se n1 e n2 são exatamente divisíveis por i, o valor de i é atribuído a mdc.
Quando o for
loop é concluído, o maior divisor comum de dois números é armazenado na variável gcd.
Exemplo # 2: GCD usando loop while e instrução if… else
#include int main() ( int n1, n2; printf("Enter two positive integers: "); scanf("%d %d",&n1,&n2); while(n1!=n2) ( if(n1> n2) n1 -= n2; else n2 -= n1; ) printf("GCD = %d",n1); return 0; )
Resultado
Insira dois inteiros positivos: 81 153 GCD = 9
Essa é a melhor maneira de encontrar o GCD. Nesse método, o inteiro menor é subtraído do inteiro maior e o resultado é atribuído à variável que contém o inteiro maior. Este processo continua até que n1 e n2 sejam iguais.
Os dois programas acima funcionam conforme pretendido apenas se o usuário inserir números inteiros positivos. Aqui está uma pequena modificação do segundo exemplo para encontrar o GCD para inteiros positivos e negativos.
Exemplo # 3: GCD para números positivos e negativos
#include int main() ( int n1, n2; printf("Enter two integers: "); scanf("%d %d",&n1,&n2); // if user enters negative number, sign of the number is changed to positive n1 = ( n1> 0) ? n1 : -n1; n2 = ( n2> 0) ? n2 : -n2; while(n1!=n2) ( if(n1> n2) n1 -= n2; else n2 -= n1; ) printf("GCD = %d",n1); return 0; )
Resultado
Insira dois inteiros: 81 -153 GCD = 9
Você também pode usar a recursão para encontrar o GCD.