java中求最小公倍数和最大公约数的方法
Java 求最大公约数(GCD)和最小公倍数(LCM)
最大公约数(GCD):两个数能同时整除的最大正整数
例:12 和 18 → GCD = 6
最小公倍数(LCM):能同时被两个数整除的最小正整数
例:12 和 18 → LCM = 36
核心公式(必记)
plaintext
最小公倍数 = 两数乘积 / 最大公约数
LCM(a, b) = (a * b) / GCD(a, b)
只要算出 GCD,LCM 直接用公式算!
原理
gcd(a, b) = gcd(b, a % b),直到余数为 0,最后那个非零数就是 GCD。
完整 Java 代码
java
运行
public class GcdLcm {
public static void main(String[] args) {
int a = 12;
int b = 18;
int gcd = getGcd(a, b);
int lcm = getLcm(a, b);
System.out.println("最大公约数:" + gcd); // 6
System.out.println("最小公倍数:" + lcm); // 36
}
// 求最大公约数(欧几里得算法)
public static int getGcd(int a, int b) {
// 当 b 不为 0 时,继续取模
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
// 求最小公倍数(公式法)
public static int getLcm(int a, int b) {
// 防止 int 溢出,可以先除后乘
return a / getGcd(a, b) * b;
}
}
浙公网安备 33010602011771号