题解 | #求最小公倍数#
求最小公倍数
https://www.nowcoder.com/practice/22948c2cad484e0291350abad86136c3
import java.util.*; /** * @author hll[yellowdradra@foxmail.com] * @description 求最小公倍数 * @date 2021-05-12 23:12 **/ public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); System.out.println(shortDivision(a, b)); // System.out.println(successiveDivision(a, b)); } /** * 公式法: 两个数的乘积 = 最大公因数 * 最小公倍数 * a * b = (a, b) * [a, b] * * @param a a * @param b b * @return a和b的最小公倍数 */ public static int successiveDivision(int a, int b) { int max = Math.max(a, b); int min = Math.min(a, b); int remainder; int product = a * b; while (min != 0) { remainder = max % min; max = min; min = remainder; } return product / max; } /** * 短除法 * * @param a a * @param b b * @return 最小公倍数 */ public static int shortDivision(int a, int b) { int res = 1; for (int i = 2; i <= Math.min(a, b); ) { if (a % i == 0 && b % i == 0) { a /= i; b /= i; res *= i; i = 2; } else { i++; } } return res * a * b; } }