题解 | #小乐乐与欧几里得#
小乐乐与欧几里得
https://www.nowcoder.com/practice/da13e0cf321e4df9acd0fdf0a433cbb0
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
long a = in.nextLong();
long b = in.nextLong();
System.out.println(result(a, b));
}
// 求最大公约数(更相损减法)
public static long getGCB(long a, long b, long two_num) {
if (a % 2 == 0 && b % 2 == 0) {
two_num ++;
return getGCB(a / 2, b / 2, two_num);
} else {
if (a > b) {
return getGCB(a - b, b, two_num);
} else if (b > a) {
return getGCB(b - a, a, two_num);
} else {
if (two_num == 0) {
return a;
} else {
return a * (int)Math.pow(2, two_num);
}
}
}
}
public static long result(long a, long b) {
long GCB = getGCB(a, b, 0);
long LCM = a * b / GCB; // 求最小公倍数
return GCB + LCM;
}
}