💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# Kotlin 程序:查找两个数字的 GCD > 原文: [https://www.programiz.com/kotlin-programming/examples/hcf-gcd](https://www.programiz.com/kotlin-programming/examples/hcf-gcd) #### 在此程序中,您将学习在 Kotlin 中查找两个数字的 GCD。 这是通过在`if else`语句的帮助下使用`while`循环来完成的。 两个整数的 HCF 或 GCD 是可以完全除以两个数(没有余数)的最大整数。 ## 示例 1:使用`while`循环查找两个数字的 GCD ```kt fun main(args: Array<String>) { val n1 = 81 val n2 = 153 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 } println("GCD of $n1 and $n2 is $gcd") } ``` 运行该程序时,输出为: ```kt 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 程序](/java-programming/examples/hcf-gcd)。 * * * 在 Kotlin 中找到 GCD 的更好方法如下: ## 示例 2:找到两个数字的 GCD(更好的替代方法) ```kt fun main(args: Array<String>) { var n1 = 81 var n2 = 153 while (n1 != n2) { if (n1 > n2) n1 -= n2 else n2 -= n1 } println("GCD = $n1") } ``` 运行该程序时,输出为: ```kt GCD = 9 ``` 这是查找 GCD 的更好方法。 在此方法中,从较大的整数中减去较小的整数,然后将结果分配给保存较大整数的变量。 继续该过程,直到`n1`和`n2`相等为止。 仅当用户输入正整数时,以上两个程序才能按预期工作。 这是第二个示例的一些修改,可以找到正整数和负整数的 GCD。 * * * ## 示例 3:正数和负数的 GCD ```kt fun main(args: Array<String>) { var n1 = 81 var n2 = -153 // Always set to positive n1 = if (n1 > 0) n1 else -n1 n2 = if (n2 > 0) n2 else -n2 while (n1 != n2) { if (n1 > n2) n1 -= n2 else n2 -= n1 } println("GCD = $n1") } ``` 运行该程序时,输出为: ```kt GCD = 9 ```