天天看点

辗转相除法(求最大公约数,最小公倍数)

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
/*求最大公约数*/
int gcd(int x,int y)
{int b;int c,t;
b=x>y?x:y;//如果x>y ,有b=x ,否则b=y
c=x<y?x:y;
while(b%c!=0)
{
	t=c;/*保留除数,作为下一次的被除数*/
	c=b%c;//取余	
	b=t;//将前一次的被除数当作后一次的除数
}
return c;
}
/*求最小公倍数*/
int lcm(int x,int y)
{
	int GCD,LCM;
	GCD=gcd(x,y);
	LCM=(x/GCD)*(y/GCD)*GCD;
	return LCM;
}
int main()
{int a;int b;
scanf("%d",&a);
scanf("%d",&b);
printf("gcd(%d,%d)=%d\n",a,b,gcd(a,b));
printf("lcm(%d,%d)=%d\n",a,b,lcm(a,b));
return 0;
}
           
辗转相除法(求最大公约数,最小公倍数)