最近在准备考专升本,所以写一点C语言的学习心得,记录一下。
输入两个数,求他们的最大公约数和最小公倍数:
最小公倍数=两个数的乘积除以他们的最大公约数
所以这个很简单,等公约数出来一算就好了
最大公约数,我用的是辗转相除法:
假设有两个整数x,y
1、x对y取模得到余数c(因为前面判断过x和y谁大了,这里取模就不用关注谁大谁小的问题)
2、如果余数c等于0,那么x就是他们的最大公约数了
3、如果c不等于0,那就交换他们的值x=y,y=c
这样循环,公约数就可以求出来了。
int main() {
int x,y,a,b,c,gongbeishu;
printf("输入两个数字:");
scanf("%d%d",&x,&y);
if(x<y){//如果前面的数大于后面的数,就交换位置
c=y;
y=x;
x=c;
}
a=x;//存储一下x和y,后面用来求公约数用的
b=y;
while (y!=0){//余数不为0,就继续的除
c=x%y;
x=y;
y=c;
}
gongbeishu=a*b/x;
printf("最小公倍数是:%d\n",gongbeishu);
printf("最大公约数是:%d",x);
return 0;
}