1.
由于辗转相除是不断通过余数来作为除数的,所以刚输入的数据,一定是大除以小。为了保证数据的严密,需要比较调整一下两数大小。
if (a<b)
{
c=a;
a=b;
b=c;
}
保证了a>=b。
2.
辗转相除求最大公约数
while (b!=0)
{
c=a;
a=b;
b=c%b;
}
此时,a为最大公约数。
3.
求最小公倍数
有了最大公约数,最小公倍数就顺势而出,即两数相乘再除以最大公约数。
为了保留原始数据,可以在开始时加设两个变量。
核心步骤为:
x=a;
y=b;
……
求出最大公约数,并赋值于a后:
c=x*y/a;
最终完整程序为:
# include<stdio.h>
int main()
{
int a,b,c,x,y;
printf("请输入两个正整数,用逗号间隔:");
scanf("%d, %d", &a, &b);
x = a;
y = b;
if (a < b)
{
c = a;
a = b;
b = c;
}
while (b != 0)
{
c = a;
a = b;
b = c % b;
}
c = x * y / a;
printf("最大公约数为%d,最小公倍数为%d", a, c);
return 0;
}