#P93. 最大公约数(GCD)与最小公倍数(LCM)
最大公约数(GCD)与最小公倍数(LCM)
题目描述
给定 对整数,每组有两个整数,求每对整数的最大公约数与最小公倍数。
求最大公约数(GCD)与最小公倍数(LCM)有很多方法,这里介绍的是辗转相除法,也称为欧几里德算法,是一种用于求解两个正整数最大公约数的有效算法。其基本思想是通过重复使用取余操作来逐步缩小两个整数的范围,直到得到最大公约数,由于其高效性和简洁性,常用于编程和数学等领域。
最小公倍数可以在求得最大公约数后,根据公式:a * b == GCD * LCM,即LCM = a * b / GCD得来,为防止a * b的计算超过整数类型的表示范围,建议通过LCM = a / GCD * b计算而来。
辗转相除法的数学原理:对于整数a、b和余数r(r = a % b),如果a能被b整除(即a % b == 0),那么b就是a和b的最大公约数。否则,最大公约数等于b和r的最大公约数。 辗转相除法的步骤如下:
- 选取两个正整数a和b作为输入。
- 计算a除以b的余数,用r表示,即r = a % b。
- 若r为0,则b就是最大公约数,算法结束,返回b。
- 若r不为0,则将b赋值给a,将r赋值给b,然后返回第2步,继续执行。
- 重复执行步骤2、3、4,直到余数r等于0为止。最终,辗转相除法得到的b即是a和b的最大公约数。
3
45 60
99 36
2345 789
15 180
9 396
1 1850205