跳到主要内容

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

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

示例1:使用while循环和if语句计算LCM的Kotlin程序

fun main(args: Array<String>) {
val n1 = 72
val n2 = 120
var lcm: Int

// 将n1和n2中的较大数存储在lcm中
lcm = if (n1 > n2) n1 else n2

// 一直为真
while (true) {
if (lcm % n1 == 0 && lcm % n2 == 0) {
println("$n1$n2的最小公倍数是$lcm。")
break
}
++lcm
}
}

当你运行这个程序时,输出将会是:

72120的最小公倍数是360

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

然后,我们初始将 lcm 设置为两个数字中的较大数。这是因为LCM不能小于较大的数。

与Java类似,在无限循环 while(true) 内,我们检查 lcm 是否能够完全整除 n1n2

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

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

以下是等效的Java代码:Java程序:查找两个数字的最小公倍数

我们还可以使用最大公约数(GCD)来计算两个数字的LCM,使用以下公式:

LCM = (n1 * n2) / GCD

如果你不知道如何在Java中计算GCD,请查看Kotlin程序:查找两个数字的GCD

示例2:使用GCD计算LCM的Kotlin程序

fun main(args: Array<String>) {
val n1 = 72
val n2 = 120
var gcd = 1

var i = 1
while (i <= n1 && i <= n2) {
// 检查i是否是这两个整数的因数
if (n1 % i == 0 && n2 % i == 0)
gcd = i
++i
}

val lcm = n1 * n2 / gcd
println("$n1$n2的最小公倍数是$lcm。")
}

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

在这里,我们在while循环内计算了这两个数字的GCD。计算后,我们使用上述公式计算LCM。