跳到主要内容

Java程序寻找两个数字的最小公倍数

要理解这个示例,您应该了解以下 Java 编程 主题:

两个整数的最小公倍数是能够被这两个数字完美整除(没有余数)的最小正整数。

示例 1:使用 while 循环和 if 语句求解 LCM

public class Main {
public static void main(String[] args) {

int n1 = 72, n2 = 120, lcm;

// 将 n1 和 n2 中的最大数存储在 lcm 中
lcm = (n1 > n2) ? n1 : n2;

// 永远为真
while(true) {
if( lcm % n1 == 0 && lcm % n2 == 0 ) {
System.out.printf("%d 和 %d 的最小公倍数是 %d。", n1, n2, lcm);
break;
}
++lcm;
}
  }
}

输出

72120 的最小公倍数是 360

在这个程序中,需要求 LCM 的两个数字分别存储在变量 n1n2 中。

首先,我们将 lcm 设置为两个数字中较大的一个。这是因为 LCM 不可能小于最大的数字。

在无限循环 while (while(true)) 中,我们检查 lcm 是否能够完美整除 n1n2

如果可以,我们就找到了 LCM。我们打印 LCM 并使用 break 语句跳出 while 循环。

否则,我们将 lcm 增加 1 并重新测试整除条件。

我们也可以使用 GCD 来找出两个数字的 LCM,使用以下公式:

LCM = (n1 * n2) / GCD

如果您不知道如何在 Java 中计算 GCD,请查看 Java 程序找出两个数字的最大公约数

示例 2:使用 GCD 计算 LCM

public class Main {
public static void main(String[] args) {

int n1 = 72, n2 = 120, gcd = 1;

for(int i = 1; i <= n1 && i <= n2; ++i) {
// 检查 i 是否为两个整数的因子
if(n1 % i == 0 && n2 % i == 0)
gcd = i;
}

int lcm = (n1 * n2) / gcd;
System.out.printf("%d 和 %d 的最小公倍数是 %d。", n1, n2, lcm);
}
}

这个程序的输出与示例 1 相同。

在这里,for 循环中我们计算两个数字 n1n2 的 GCD。计算完成后,我们使用上述公式计算 LCM。