这是2011北大设计大赛的第一道编程题。
自己做的时候,一看就做的涉及大整数问题,故采用了数组。然而没学过采用素数分解法,最后做出的结果是当输出20时,就要等半天才出结果。
后来在网上看到这方法,自己又重新写了一遍,除了98,99很慢以后,1~97都不会超过1秒钟了!!
素数分解法:
当n=60时,有
逐个素数确定其指数:
2:在[m,n]范围内,2
1有倍数,2
2有倍数, 2
3有倍数,…, 2
5有倍数,2
6无倍数。确定2指数为5,幂32;
3:在[m,n]范围内,3
1有倍数,3
2有倍数, 3
3有倍数, 3
4无倍数。确定3指数为3,幂27;
5:在[m,n]范围内,5
1有倍数,5
2有倍数, 5
3无倍数。确定5指数为2,幂25
............
最后将这些素数幂的指数相乘。
//输入整数n,求1~n(1<n<100)的最小公倍数。
//例如 输入 :6 输出 60 输入:10 输出 2520 输入:100 输出41位整数
//思路:该题是求n个数的最小公倍数,由题目可知,可定涉及到大整数问题,故用数组来存储大整数