Programa C para encontrar GCD de dois números

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 forloop é 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 forloop é 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.

Artigos interessantes...