求两个正整数的最大公约数。编写求最大公约数的函数Gcd(),主函数中输入任意两个整数,调用此函数求最大公约数并输出结果。 要求函数原型为:int Gcd(int a, int b),a、b为输入的任意两个整数,当a或b为0或负数时
时间: 2024-02-15 11:05:08 浏览: 148
好的,我知道了。下面是代码实现:
```c++
#include <iostream>
using namespace std;
int Gcd(int a, int b) {
if (a <= 0 || b <= 0) { // a或b为0或负数时返回-1表示出错
return -1;
}
while (a % b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return b;
}
int main() {
int a, b;
cout << "请输入两个正整数:" << endl;
cin >> a >> b;
int gcd = Gcd(a, b);
if (gcd == -1) {
cout << "输入的数不合法!" << endl;
} else {
cout << a << "和" << b << "的最大公约数为:" << gcd << endl;
}
return 0;
}
```
函数Gcd()的实现使用了辗转相除法,具体原理可以自行搜索了解。在主函数中,首先输入两个整数,然后调用Gcd()函数求最大公约数,最后判断是否出错并输出结果。
注意,当a或b为0或负数时,函数Gcd()返回-1表示出错。这种处理方式并不是唯一的,可以根据实际需求调整。
相关问题
两个正整数的最大公约数是能够整除这两个整数的最大整数。请分别采用如下三种方法编写计算最大公约数的函数Gcd(),在主函数中调用该函数计算并输出从键盘任意输入的两整数的最大公约数
计算两个正整数的最大公约数(Greatest Common Divisor,GCD),有几种常见的算法可以实现。以下是三种常见方法的示例:
1. **欧几里得算法(辗转相除法)**:
```c++
#include <iostream>
// 使用辗转相除法计算GCD
int Gcd(int a, int b) {
while (b != 0) {
int temp = a % b;
a = b;
b = temp;
}
return a;
}
int main() {
int num1, num2;
std::cout << "请输入第一个整数: ";
std::cin >> num1;
std::cout << "请输入第二个整数: ";
std::cin >> num2;
int result = Gcd(num1, num2);
std::cout << "两个数的最大公约数是: " << result << std::endl;
// 相关问题--
两个整数的最大公约数(GCD)是能够整除这两个整数的最大整数。编写一个 计算最大公约数的函数Gcd( ),在主函数中调用该函数计算并输出从键盘任意输入 的两整数的最大公约数。(可参照教材P203习题7.7的方法介绍)。
要编写一个计算两个整数最大公约数 (GCD) 的函数,我们可以使用欧几里得算法 (Euclidean Algorithm),它是求解两个正整数最大公约数的经典方法。以下是一个简单的 C 语言版本:
```c
#include <stdio.h>
// GCD 函数,使用辗转相除法(欧几里得算法)
int gcd(int a, int b) {
if (b == 0)
return a;
else
return gcd(b, a % b);
}
// 主函数,用于获取用户输入并调用 GCD 函数
int main() {
int num1, num2;
printf("请输入第一个整数: ");
scanf("%d", &num1);
printf("请输入第二个整数: ");
scanf("%d", &num2);
// 输出两个数的最大公约数
int result = gcd(num1, num2);
printf("这两个数的最大公约数是: %d\n", result);
return 0;
}
```
在这个程序中,`gcd()` 函数接收两个参数 `a` 和 `b`,如果 `b` 为零,则返回 `a`,否则递归地计算 `gcd(b, a % b)`,直到 `b` 变为零。在 `main()` 函数中,我们首先获取用户的输入,然后调用 `gcd()` 函数并将结果打印出来。
阅读全文
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)