求多个数的最小公倍数 (java+大数)

2043: 最小公倍数

时间限制: 1 Sec   内存限制: 64 MB
提交: 11   解决: 9
您该题的状态:已完成
[提交][状态][讨论版]

题目描述

为什么1小时有60分钟,而不是100分钟呢?这是历史上的习惯导致。
但也并非纯粹的偶然:60是个优秀的数字,它的因子比较多。
事实上,它是1至6的每个数字的倍数。即1,2,3,4,5,6都是可以除尽60。

我们希望寻找到能除尽1至n的的每个数字的最小整数m.

输入

多组测试数据(少于500组)。 每行只有一个数n(1<=n<=100).

输出

输出相应的m。

样例输入

2
3
4

样例输出

2
6
12

/*求多个数的最小公倍数:
     先求出前两个数a1和a2的最小公倍数b1,
     再求第三个数a3与b1的最小公倍数b2,
     再求a4与b2的最小公倍数b3,
          ……
     最后求出an与b(n-2)的最小公倍数b(n-1)
     b(n-1)即为所求
*/
import java.util.*;
import java.math.*;

public class Main 
{
	public static void main(String[] args)
	{
		Scanner cin=new Scanner(System.in);
		BigInteger[] a=new BigInteger[105];
		a[1]=BigInteger.ONE;
		for(int i=2;i<=100;i++)//预处理
		{
			a[i]=a[i-1].multiply(BigInteger.valueOf(i)).divide(a[i-1].gcd(BigInteger.valueOf(i)));
		}
		while(cin.hasNext())
		{
			int n=cin.nextInt();
			System.out.println(a[n].toString());
		}
	}
}


猜你喜欢

转载自blog.csdn.net/lvjinyanjy/article/details/80185583