最大公约数,最小公倍数
求两个数的最大公约数,辗转相除法无疑是一个很棒的算法,接下来就说说辗转相除法并代码实现它吧!ps:萌新第一次写,不好的地方就这样看着吧,反正你又不能顺着网线来揍我。
辗转相除法过程和证明过程可以百度一下啦,下面直接给出代码实现吧
#include<stdlib.h>
#include<stdio.h>
/*
输入两个整数,求它们的最大公约数和最小公倍数
*/
int main (void){
int gcd(int x,int y);//最大公约数
int lcm(int x,int y);//最小公倍数
printf("输入两个整数:");
int a,b;
scanf("%d %d",&a,&b);
printf("%d和%d的最大公约数为%d\n",a,b,gcd(a,b));
printf("%d和%d的最小公倍数为%d\n",a,b,lcm(a,b));
return 0;
}
int gcd(int x,int y){//最大公约数
if(y>x){//保证x>y
int temp=x;
x=y;
y=temp;
}
int m=x%y;//余数
while(m!=0){//余数为0结束
x=y;
y=m;
m=x%y;
}
return y;//最大公约数
}
int lcm(int x,int y){//最小公倍数
int m=gcd(x,y);//调用最大公约数
return m*(x/m)*(y/m);//生成最小公倍数
}