题解 | #求最小公倍数#
求最小公倍数
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)); } }