1. 基本思路
这个算法是用辗转相除法实现的,所以这里只讲辗转相除法的原理。
需要为这个问题设置两个函数,一个求最大公因数,另一个借返回的最大公因数的值求最小公倍数。
假设求(18, 23)这个范围内的所有数字的最小公倍数:
18 18 18
18 19 18 * 19 342
18 19 20 18 * 19 * 20 / 2 342 * 20 / 2
18 19 20 21 18 * 19 * 20 / 2 * 21 / 3 3420 * 21 / 3
18 19 20 21 22 18 * 19 * 20 / 2 * 21 / 3 * 22 / 2 23940 * 22 / 2
18 19 20 21 22 23 18 * 19 * 20 / 2 * 21 / 3 * 22 / 2 * 23 263340 * 23
其中除号后面的数为该数字与前面所有数字最小公倍数的最大公因数,我们需要除掉最大公因数,然后累乘得到新的最小公倍数。
为了简便运算,减少不必要的遍历,所以我们只在求最大公因数的算法里传入两个数值,即之前所有数字的最小公倍数和将要处理的数字。在求最小公倍数时,