¡¡¡Buenas!!!
El algoritmo de euclides solo tiene que calcular el MCD de dos enteros, no tienes porque guardar los restos sucesivos a no ser que luego te pidan los coeficientes de la Identidad de Bezout.
Te planteo dos soluciones, una iterativa y otra recursiva:
Iterativa:
y recursiva:
Espero que os sea util.
¡¡¡Un saludo!!!
El algoritmo de euclides solo tiene que calcular el MCD de dos enteros, no tienes porque guardar los restos sucesivos a no ser que luego te pidan los coeficientes de la Identidad de Bezout.
Te planteo dos soluciones, una iterativa y otra recursiva:
Iterativa:
Código (c) [Seleccionar]
int mcdEuclides(int a, int b)
{
int aux,resto;
if(a<0)
a*=-1;
if(b<0)
b*=-1;
if(a<b)
{
aux=a;
a=b;
b=aux;
}
if(b==0)
return a;
do{
resto=a%b;
a=b;
b=resto;
}while(b!=0);
return a;
}
y recursiva:
Código (c) [Seleccionar]
int mcdEuclides(int a,int b)
{
int aux;
if(a<0)
a*=-1;
if(b<0)
b*=-1;
if(a<b)
{
aux=a;
a=b;
b=aux;
}
if(b==0)
return a;
return mcdEuclides(b,a%b);
}
Espero que os sea util.
¡¡¡Un saludo!!!