questão 7 do capitulo 8

questão 7 do capitulo 8

por Marcel F. Fernandes -
Número de respostas: 2

problema:fazer programa para encontrar maximo divisor comum entre a1 e a2.

eu fiz isso, mas esta errado.

como concerto?

class Euclides
{
  int n;
  int resposta;
  int x;
 
  int mdc(int a1, int a2)
  {
    if(a2>a1)
    {
      System.out.println("erro");
    }
    else
    {
      if(a1%a2==0)
      {
        resposta=a2;
      }
     
      else
      {
        n=a1;
        x=a2;
       
        while(n%x!=0)
        {
          n=x;
          x=x/2;
          resposta=x;
        }
      }
    }
       return resposta;
  }
}
      
obrigado    

Em resposta à Marcel F. Fernandes

Re: questão 7 do capitulo 8

por Ariane Haselmann -
Não entendi essa parte do código:

while(n%x!=0)
{
n=x;
x=x/2;
resposta=x;
}

O algoritmo de Euclides funciona assim:
Se a2 divide a1 MDC(a1,a2)=a2
Senão MDC(a1,a2)=MDC (a2,a1%a2)
Ou seja, enquanto não der pra dividir a1 por a2, a1 vai receber a2 e a2 vai receber a1%a2
(cuidado para fazer essas atribuições corretamente).

Em resposta à Ariane Haselmann

Re: questão 7 do capitulo 8

por Thiago Postal -
Considerando que a1> a2, podemos fazer assim:

class Euclides
{
int algoritmoDeEuclides(int a, int b)
{
int numerador = a;
int denominador = b;
int resto = a%b;

while(resto!=0)
{
numerador= denominador;
denominador=resto;
resto=numerador%denominador;
}
return (denominador);
}
}