oj:求两个数的最大公约数和最小公倍数

时间:2022-11-11 00:36:55

求最小公倍数算法:

最小公倍数=两整数的乘积÷最大公约数

求最大公约数算法:

辗转相除法

有两整数a和b:

① a%b得余数c

② 若c=0,则b即为两数的最大公约数

③ 若c≠0,则a=b,b=c,再回去执行①

例如求27和15的最大公约数过程为:

27÷15 余1215÷12余312÷3余0因此,3即为最大公约数

unsigned a, b;
while (cin >> a >> b)
{

if (a < b)swap(a, b); //交换a,b两数,保证a比b大
unsigned m=a, n=b, c;
c = a%b;
while (c)
{
a = b;
b = c;
c = a%b;
}//退出循环时,b即为最大公约数
cout << m*n / b << endl;
}