题解 | #求最小公倍数#
求最小公倍数
http://www.nowcoder.com/practice/22948c2cad484e0291350abad86136c3
1.1 递归结束条件
1. 有一个元素为 1
2. 没有公因数
1.2 计算
所有公因数相乘
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextInt()) { // 注意 while 处理多个 case
int a = in.nextInt();
int b = in.nextInt();
System.out.println(lower(a, b));
}
}
public static int lower(int a, int b) {
// 退出条件有两个
// 1. a b 其中一个为 1,最小公倍数是二者的积
if (a == 1 || b == 1) {
return a * b;
}
// 找当前数字的最小公因数
int c = 0;
if (a % 2 == 0 && b % 2 == 0) {
c = 2;
} else if (a % 3 == 0 && b % 3 == 0) {
c = 3;
} else if (a % 5 == 0 && b % 5 == 0) {
c = 5;
} else if(a % 7 == 0 && b % 7 == 0) {
c = 7;
} else {
// 2. 没有公因数
return a * b;
}
// 3. 正常计算:最小公倍数就是所有公因数相乘
// 执行到此处,说明可以整除
return c * lower(a / c, b / c);
}
}