使用c++任务描述:给定两个正整数,求它们的最大公约数。 测试输入:输入一行,包含两个正整数(<1,000,000,000)。 预期输出:输出一个正整数,即这两个正整数的最大公约数。
时间: 2024-12-28 20:37:17 浏览: 10
在C++中,我们可以设计一个简单的程序来接收用户输入的两个正整数,并利用辗转相除法(也称为欧几里得算法)计算它们的最大公约数。下面是一个简化的任务描述及对应的代码示例:
**任务描述**:
创建一个名为`find_gcd`的函数,它接受两个整数作为参数,然后返回这两个数字的最大公约数。如果输入的不是正整数,函数应该抛出异常或者处理这种情况。
```cpp
#include <iostream>
#include <exception>
// 定义 find_gcd 函数
int find_gcd(int num1, int num2) {
if (num1 <= 0 || num2 <= 0) {
throw std::invalid_argument("输入的数字必须是正整数");
}
while (num2 != 0) {
int temp = num1 % num2; // 计算余数
num1 = num2;
num2 = temp; // 交换两个数的位置
}
return num1; // 返回最大公约数
}
int main() {
int num1, num2;
std::cout << "请输入两个正整数(用空格分隔): ";
std::cin >> num1 >> num2;
try {
int result = find_gcd(num1, num2);
std::cout << "两数的最大公约数是: " << result << std::endl;
} catch (const std::invalid_argument& e) {
std::cerr << "错误: " << e.what() << std::endl;
}
return 0;
}
```
当你运行这个程序时,它会提示用户输入两个正整数,然后计算并输出它们的最大公约数。如果输入不符合要求,程序会捕获`std::invalid_argument`异常并给出相应的错误信息。
阅读全文