JAVA求多個數的最小公倍數
阿新 • • 發佈:2019-01-31
import java.util.Scanner;
/*Problem Description
求n個數的最小公倍數。
Input
輸入包含多個測試例項,每個測試例項的開始是一個正整數n,然後是n個正整數。
Output
為每組測試資料輸出它們的最小公倍數,每個測試例項的輸出佔一行。你可以假設最後的輸出是一個32位的整數。
Sample Input
2 4 6
3 2 5 7
Sample Output
12
70*/
public class demoMultiple {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {// sc.hasNext()判斷是否有輸入,有則為TRUE,反之則為FALSE
int n = sc.nextInt();
long[] a = new long[n];
for (int i = 0; i < a.length; i++) {
a[i] = sc.nextLong();
}
System.out.println(commonMultiple(a));
}
}
public static long commonDivisor(long n, long m) {// 求兩個數的最大公約數
// 輾轉相除法是用大的除以小的,如果N<M,第一次相當N與M值交換(例如2%3,商0餘2)
while (n % m != 0) {
long temp = n % m;
n = m;
m = temp;
}
return m;
}
public static long commonMultiple(long n, long m) {// 求兩個數的最小公倍數
// 兩個數相乘等於這兩個數的最大公約數和最小公倍數的積。
return n * m / commonDivisor(n, m);
}
public static long commonMultiple(long[] a) {// 求多個數的最小公倍數
long value = a[0];
for (int i = 1; i < a.length; i++) {
value = commonMultiple(value, a[i]);
}
return value;
}
}
/*Problem Description
求n個數的最小公倍數。
Input
輸入包含多個測試例項,每個測試例項的開始是一個正整數n,然後是n個正整數。
Output
為每組測試資料輸出它們的最小公倍數,每個測試例項的輸出佔一行。你可以假設最後的輸出是一個32位的整數。
Sample Input
2 4 6
3 2 5 7
Sample Output
12
70*/
public class demoMultiple {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {// sc.hasNext()判斷是否有輸入,有則為TRUE,反之則為FALSE
int n = sc.nextInt();
long[] a = new long[n];
for (int i = 0; i < a.length; i++) {
a[i] = sc.nextLong();
}
System.out.println(commonMultiple(a));
}
}
public static long commonDivisor(long n, long m) {// 求兩個數的最大公約數
// 輾轉相除法是用大的除以小的,如果N<M,第一次相當N與M值交換(例如2%3,商0餘2)
while (n % m != 0) {
long temp = n % m;
n = m;
m = temp;
}
return m;
}
public static long commonMultiple(long n, long m) {// 求兩個數的最小公倍數
// 兩個數相乘等於這兩個數的最大公約數和最小公倍數的積。
return n * m / commonDivisor(n, m);
}
public static long commonMultiple(long[] a) {// 求多個數的最小公倍數
long value = a[0];
for (int i = 1; i < a.length; i++) {
value = commonMultiple(value, a[i]);
}
return value;
}
}