题目:
2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.
What is the smallest number that is evenly divisible by all of the numbers from 1 to 20?
翻译:
2520是最小一个能被1到10都整除的数。那么最小一个能被1到20都整除的数是几?
解题思路:
一大坨英文,翻译成正常人能听懂的话,叫:计算1-20的最小公倍数。
最小公倍数,就要把1-20全部因式分解,然后取各因数的最大幂,将他们乘积。
不过,费时费力。。。
换个思路。比如 6 与 9。 6=2X3 9=3X3, 所以最小公倍数是2X3X3 = 18。
那如果加上 2 与 3 一起求 最大公倍数呢? 发现还是18。 其实问题就可以这么想。
以 2,3,6,9为例子。
计算首先记录下2,3。因为是质数。然后计算6时,发现,除掉之前的2,和之前的3,就剩1了。那么就是说,6并没有需要保留的
因子的幂的增量。来看9,除掉个3,还有一个3,意思就是,有因子3,幂的增量是1,所以再记录一个3。 全部计算完毕,我们记录了一个2 和两个3 。那么最小公倍数就是他们的乘积:18。
那么就可以写出简单的循环计算因子增量的方法。然后讲他们全部相乘,结果就被阿拉组特勒。
代码: