Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Algoritmo de Euclides - MCD
Algoritmo de Euclides - MCD
/*Seincluyen4versiones:2iterativasy2recursivas*/
/*SeutilizaelAlgoritmodeEuclides*/
/*Seutilizalapropiedad:sia>b,mcd(a,b)=mcd(ab,b)*/
#include<stdio.h>
/*FuncionquehallaydevuelveelmcdmedianteelAlgoritmodeEuclides*/
/*deformaiterativa*/
intmcd1_iter(intm,intn)
{
intr;
while(r!=0)
{
r=m%n;
m=n;
n=r;
}
return(m);/*meselultimorestononulo*/
/*FuncionquehallaydevuelveelmcdmedianteelAlgoritmodeEuclides*/
/*deformarecursiva*/
intmcd1_rec(intm,intn)
{
intr;
r=m%n;
if(r==0)
return(n);
else
return(mcd1_rec(n,r));
/*Funcionquehallaydevuelveelmcdmediantelapropiedadcitada*/
/*deformaiterativa*/
intmcd2_iter(intm,intn)
{
while(m!=n)
if(m>n)
m=mn;
else
n=nm;;
return(m);
}
/*Funcionquehallaydevuelveelmcdmediantelapropiedadcitada*/
/*deformarecursiva*/
intmcd2_rec(intm,intn)
{
if(m==n)
return(m);
elseif(m>n)
return(mcd2_rec(mn,n));
else
return(mcd2_rec(m,nm));
voidmain()
{
intm,n;
/*Pidelosnumeros*/
printf("\nIntroduzcadosnumeros:\n");
scanf("%d%*c%d%*c",&m,&n);
/*Antescompruebaqueseanpositivos*/
if((m<=0)||(n<=0))
printf("\nError:Hayalgundatonopositivo\n");
/*Calculaelmcd*/
else
{
printf("\nElmcdes%d.\n",mcd1_iter(m,n));
printf("\nElmcdes%d.\n",mcd1_rec(m,n));
printf("\nElmcdes%d.\n",mcd2_iter(m,n));
printf("\nElmcdes%d.\n",mcd2_rec(m,n));
}