c++分别使用 do—while 和 while两种方法用欧几里德算法求两个正整数的最大公约数
时间: 2024-10-15 14:09:25 浏览: 31
最大公约数与最小公倍数-谭浩强c++简单详细版
在C++中,可以使用do-while循环和while循环结合来实现欧几里得算法(也称为辗转相除法),用于求解两个正整数的最大公约数(GCD)。这里以do-while循环为例:
```cpp
#include <iostream>
int gcd(int a, int b) {
int remainder;
do {
// 计算余数
remainder = a % b;
// 更新较小的数为余数
a = b;
b = remainder;
} while (remainder != 0);
return b; // 返回最大公约数
}
int main() {
int num1, num2;
std::cout << "请输入两个正整数: ";
std::cin >> num1 >> num2;
if (num1 <= 0 || num2 <= 0) {
std::cerr << "输入错误! 只能处理正整数.\n";
} else {
int result = gcd(num1, num2);
std::cout << "两数的最大公约数是: " << result << "\n";
}
return 0;
}
```
在这个示例中,do-while循环会先计算一次余数,然后判断是否还有余数。如果有余数,则继续循环;直到余数为零,此时b的值就是最大公约数。
阅读全文