分别使用 do—while 和 while两种方法用欧几里德算法求两个正整数的最大公约数
时间: 2024-10-15 15:09:24 浏览: 53
欧几里得算法(也称辗转相除法)是用于计算两个正整数最大公约数的一种古老而有效的方法。这里分别用`do...while`循环和`while`循环来演示这个过程。
**do...while 循环实现欧几里得算法:**
```java
int a = 54, b = 24;
int gcd = a; // 将较大值作为初始 gcd
do {
int temp = gcd % b; // 计算余数
if (temp == 0) break; // 如果余数为0,则找到gcd
gcd = b; // 更新较大的数为较小的数(b)
b = temp; // 更新较小的数为余数
} while (true);
System.out.println("两个数的最大公约数为:" + gcd);
```
**while 循环实现欧几里得算法:**
```java
int a = 54, b = 24;
while (b != 0) { // 当b不等于0时继续循环
int temp = gcd(a, b); // 计算当前a和b的最大公约数
a = b; // 更新a为之前的b
b = temp; // 更新b为之前计算得到的余数
}
System.out.println("两个数的最大公约数为:" + a);
// 可以通过函数gcd()来计算最大公约数,而不是每次都手动做模运算
private static int gcd(int num1, int num2) {
return num2 == 0 ? num1 : gcd(num2, num1 % num2);
}
```
在这两种情况下,都是不断将较大数除以较小数并取余,直到余数为零,这时较小数就是最大公约数。
阅读全文