题目条件:输入两个数,求它们的最大公约数和最小公倍数,要求使用辗转相除法。
例:(1)输入:3,6 输出:3,6
(2)输入:3,5 输出:1,15
辗转相除法介绍:设两数为a、b(a>b),求a和b最大公约数(a,b)的步骤如下:用a除以b,得a÷b=q......r1(0≤r1)。若r1=0,则(a,b)=b;若r1≠0,则再用b除以r1,得b÷r1=q......r2 (0≤r2).若r2=0,则(a,b)=r1,若r2≠0,则继续用r1除以r2,……如此下去,直到能整除为止。其最后一个为被除数的余数的除数即为(a, b)。
#include<stdio.h>
int main()
{ int a,b;
scanf("%d,%d",&a,&b); //定义并输入两个数的值
int i,zdgy,zxgb,c;
c=a*b;
while(b!=0) //除数为0时循环结束
{
i=b; //i用于保存变量b的值
b=a%b;
a=i; //将i的值作为下一次被除数的值
zdgy=i;
}
zxgb=c/zdgy; //最小公倍数=两数乘积/最大公约数
printf("%d,%d",zdgy,zxgb); //输出最大公约数和最小公倍数
return 0;
}
运行代码:
3,5
回车后输出如下:
1,15
运算结果正确,代码无误
总结一下,该题重点在于辗转相除法的运用,利用变量保存所需的值并调用为解题关键