原文: https://www.programiz.com/kotlin-programming/examples/lcm
在此程序中,您将学习使用 GCD 而不是 GCD 查找两个数字的 lcm。 这是通过 Kotlin 中的while
循环完成的。
两个整数的 LCM 是可以被两个数字完全除(没有余数)的最小正整数。
示例 1:使用while
循环和if
语句计算 LCM
fun main(args: Array<String>) {
val n1 = 72
val n2 = 120
var lcm: Int
// maximum number between n1 and n2 is stored in lcm
lcm = if (n1 > n2) n1 else n2
// Always true
while (true) {
if (lcm % n1 == 0 && lcm % n2 == 0) {
println("The LCM of $n1 and $n2 is $lcm.")
break
}
++lcm
}
}
运行该程序时,输出为:
The LCM of 72 and 120 is 360.
在此程序中,将找到其 LCM 的两个数字分别存储在变量n1
和n2
中。
然后,我们最初将lcm
设置为两个数字中的最大值。 这是因为 LCM 不能小于最大数量。
与 Java 类似,在无限while
循环(while(true)
)中,我们检查lcm
是否完美地划分了n1
和n2
。
如果是这样,我们已经找到 LCM。 我们打印 LCM 并使用break
语句退出while
循环。
否则,我们将lcm
加 1,然后重新测试除数条件。
这是等效的 Java 代码:查找两个数字的 LCM 的 Java 程序。
我们还可以使用 GCD 通过以下公式查找两个数字的 LCM:
LCM = (n1 * n2) / GCD
如果您不知道如何用 Java 计算 GCD,请检查 Kotlin 程序以找到两个数字的 GCD。
示例 2:使用 GCD 计算 LCM
fun main(args: Array<String>) {
val n1 = 72
val n2 = 120
var gcd = 1
var i = 1
while (i <= n1 && i <= n2) {
// Checks if i is factor of both integers
if (n1 % i == 0 && n2 % i == 0)
gcd = i
++i
}
val lcm = n1 * n2 / gcd
println("The LCM of $n1 and $n2 is $lcm.")
}
该程序的输出与示例 1 相同。
在这里,在while
循环内,我们计算了两个数字的 GCD - n1
和n2
。 计算后,我们使用上面的公式来计算 LCM。