在此程序中,您将学习使用最大公约数查找两个数字的最小公倍数。这是通过Kotlin中的while循环完成的。
两个整数的最小公倍数是最小的正整数,可以被两个数字完全整除(无余数)。
fun main(args: Array<String>) { val n1 = 72 val n2 = 120 var lcm: Int //n1和n2之间的最大值存储在lcm中 lcm = if (n1 > n2) n1 else n2 // 一直为 true while (true) { if (lcm % n1 == 0 && lcm % n2 == 0) { println("$n1和$n2的LCM为 $lcm.") break } ++lcm } }
运行该程序时,输出为:
72 和120 的最新公倍数是360.
在这个程序中,要找到最小公倍数的两个数字分别存储在变量n1和n2中。
然后,我们首先将lcm设为这两个数中最大的。
这是因为,最小公倍数不能小于最大的数。在无限while循环(while(true))中,我们检查lcm是否完全除n1和n2。
如果是这样,我们就找到最小公倍数了。我们打印最小公倍数并使用break语句跳出while循环。
这是等效的Java代码:查找两个Number的LCM的Java程序。
我们还可以使用GCD通过以下公式查找两个数字的LCM:
LCM = (n1 * n2) / GCD
如果您不知道如何用Java计算GCD,请检查Kotlin程序以找到两个数字的GCD。
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循环中,我们计算两个数-n1和n2的GCD。在计算之后,我们使用上面的公式来计算LCM。