Guest User

Untitled

a guest
Jul 23rd, 2018
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.56 KB | None | 0 0
  1. /* Programa para calcular o MDC de dois números inteiros
  2.  * by Pierry A. Pereira <pierryangelo@gmail.com>
  3.  */
  4.  
  5. #include <stdio.h>
  6.  
  7.  
  8. int main()
  9. {
  10.    int maximo, a, b;
  11.  
  12.    printf( "Insira o primeiro numero: " );
  13.    scanf( "%d", &a );
  14.  
  15.    printf( "Insira o segundo numero: " );
  16.    scanf( "%d", &b );
  17.  
  18.    /* A função MDC pode retornar o MDC ou -1,
  19.       caso ela retorne -1 deve-se ao fato de que
  20.       há uma divisão por zero */
  21.    maximo = mdc( a, b );
  22.  
  23.    if ( maximo != -1 )
  24.       printf( "O valor maximo: %d", maximo );
  25.    else
  26.       printf( "Impossivel calcular o valor maximo!" );
  27.  
  28. return 0;
  29.  
  30. }
  31.  
  32. /* Definição da função MDC */
  33. int mdc( int x, int y )
  34. {
  35.    int primeiro, segundo, auxiliar;
  36.  
  37.    /* Necessario para determinar o maior numero, pois
  38.       a lógica do loop é baseada na ordenação dos números. */
  39.  
  40.    if ( x > y ) {
  41.       primeiro = x;
  42.       segundo = y;
  43.    }
  44.  
  45.    else if ( y > x ) {
  46.       primeiro = y;
  47.       segundo = x;
  48.    }
  49.  
  50.    else {
  51.       primeiro = segundo = x;
  52.    }
  53.  
  54.    /* Previne erro de divisão por zero */
  55.    if ( segundo == 0 || ( segundo == 0 && primeiro == 0 ) )
  56.       return -1;
  57.  
  58.    else {
  59.       /* Enquanto o resto da divisão do primeiro pelo segundo for diferente de zero
  60.          o loop continua sendo executado. */
  61.       while ( ( primeiro % segundo ) != 0 )
  62.       {
  63.          /* Faz uma cópia da primeira variável */
  64.          auxiliar = primeiro;
  65.  
  66.          primeiro = segundo;
  67.          segundo = auxiliar % segundo;
  68.       }
  69.  
  70.       return segundo;
  71.    }
  72.  
  73. } /* Fim da função MDC */
Add Comment
Please, Sign In to add comment