原文: https://www.programiz.com/kotlin-programming/examples/hcf-gcd
在此程序中,您将学习在 Kotlin 中查找两个数字的 GCD。 这是通过在if else语句的帮助下使用while循环来完成的。
两个整数的 HCF 或 GCD 是可以完全除以两个数(没有余数)的最大整数。
示例 1:使用while循环查找两个数字的 GCD
fun main(args: Array<String>) {val n1 = 81val n2 = 153var gcd = 1var i = 1while (i <= n1 && i <= n2) {// Checks if i is factor of both integersif (n1 % i == 0 && n2 % i == 0)gcd = i++i}println("GCD of $n1 and $n2 is $gcd")}
运行该程序时,输出为:
GCD of 81 and 153 is 9
这里,将要找到其 GCD 的两个数字分别存储在n1和n2中。
然后,执行while循环,直到i小于n1和n2为止。 这样,迭代 1 到两个数字中最小的所有数字以找到 GCD。
如果将n1和n2都除以i,则将gcd设置为该数字。 一直进行到找到最大数(GCD)为止,该数将n1和n2均除而无余数。
与 Java 不同,您不能在条件循环中使用for循环来解决此问题。 以下是等效的 Java 代码:查找两个数字的 GCD 的 Java 程序。
在 Kotlin 中找到 GCD 的更好方法如下:
示例 2:找到两个数字的 GCD(更好的替代方法)
fun main(args: Array<String>) {var n1 = 81var n2 = 153while (n1 != n2) {if (n1 > n2)n1 -= n2elsen2 -= n1}println("GCD = $n1")}
运行该程序时,输出为:
GCD = 9
这是查找 GCD 的更好方法。 在此方法中,从较大的整数中减去较小的整数,然后将结果分配给保存较大整数的变量。 继续该过程,直到n1和n2相等为止。
仅当用户输入正整数时,以上两个程序才能按预期工作。 这是第二个示例的一些修改,可以找到正整数和负整数的 GCD。
示例 3:正数和负数的 GCD
fun main(args: Array<String>) {var n1 = 81var n2 = -153// Always set to positiven1 = if (n1 > 0) n1 else -n1n2 = if (n2 > 0) n2 else -n2while (n1 != n2) {if (n1 > n2)n1 -= n2elsen2 -= n1}println("GCD = $n1")}
运行该程序时,输出为:
GCD = 9
