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;
}
}
}
输出
72 和 120 的最小公倍数是 360。
在这个程序中,需要求 LCM 的两个数字分别存储在变量 n1
和 n2
中。
首先,我们将 lcm
设置 为两个数字中较大的一个。这是因为 LCM 不可能小于最大的数字。
在无限循环 while (while(true)
) 中,我们检查 lcm
是否能够完美整除 n1
和 n2
。
如果可以,我们就找到了 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 循环中我们计算两个数字 n1
和 n2
的 GCD。计算完成后,我们使用上述公式计算 LCM。