求1-n的最小正整数
输入一个n (1 <= n <= 10000)
求能整除1-n的最小正整数,即最小公倍数
由于数可能比较大,输出结果mod987654321
eg.
输入:3
输出:6 (6是能整除1,2,3的最小正整数)
思路
我们知道两个数a,b的最小公倍数是,但是由于这里求1到n的最小公倍数,采用这个方法的话,a*b将超出int的表示范围,导致溢出。
因此,我们考虑类似短除的做法,对1-n的每一个数进行分解质因数的方法求解。找出每个质数的最大次幂,相乘即可得最小公倍数。
首先通过筛法找出1到n的所有质数,然后对每一个小于等于n的数,分解其质因数并找出最大的幂。最后,将每个质数的最大幂相乘,得到的结果就是n以内所有数的最小公倍数。
java解法
import java