Lowest Common Multiple Plus
Problem Description
求n个数的最小公倍数。
Input
输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。
Output
为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行。你可以假设最后的输出是一个32位的整数。
Sample Input
2 4 6
3 2 5 7
Sample Output
12
Problem Description
求n个数的最小公倍数。
Input
输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。
Output
为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行。你可以假设最后的输出是一个32位的整数。
Sample Input
2 4 6
3 2 5 7
Sample Output
12
70
这题目又是不知道哪里错了,我看了别人的答案,发现做法比我的要好,像他人学习,贴上来吧
import java.io.BufferedInputStream;
import java.util.Scanner;
public class Main{
//最大公约数
public static long gcd(long u, long v) {
long remainder = v;
while(u % v != 0) {
remainder = u % v;
u = v;
v = remainder;
}
return remainder;
}
//最小公倍数
static long lcm(long u, long v) {
return (u * v) / gcd(u, v);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner s = new Scanner(new BufferedInputStream(System.in));
int n;
long u = 1, v = 1, tp;
while(s.hasNext()) {
n = s.nextInt();
for(int i=0; i<n; ++i) {
if(i == 0) {
u = s.nextInt();
v = u;
}
else {
v = s.nextInt();
try {
u = lcm(u, v);
} catch(ArithmeticException e) {
e.printStackTrace();
}
}
}
System.out.println(u);
}
}
}