题解 | #求最小公倍数#
求最小公倍数
https://www.nowcoder.com/practice/22948c2cad484e0291350abad86136c3
(在我了解欧几里德算法之前)
我的思路:1. 寻找两数能除的一个数i,然后都除以该数;
2.把操作一的两个数再重复①;
3.当①中没有合适的数时就是递归终止,此时返回两数之积(两数都是除掉了最大公约数)。
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
private static int leastCommonMultiple(int num1, int num2) {
//特殊情况:大数能整除小数
if (Math.max(num1, num2) % Math.min(num1, num2) == 0) {
return Math.max(num1, num2);
//寻找两数能除的一个数i
for (int i = 2; i <= num1; i++) {
if (num1 % i == 0 && num2 % i == 0) {
return leastCommonMultiple(num1 / i, num2 / i) * i;
}
}
//多想一点:如果是(return 1;),那么就是寻找最大公约数
return num1 * num2;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n1 = sc.nextInt();
int n2 = sc.nextInt();
System.out.println(leastCommonMultiple(n1, n2));
}
}

查看9道真题和解析