用C++写一段代码:给出两个整数 a,b,求它们的最大公约数。要求用递归完成
时间: 2024-05-15 07:20:07 浏览: 78
好的,这是一段递归求最大公约数的示例代码:
```c
#include <stdio.h>
int gcd(int a, int b);
int main() {
int a, b;
printf("请输入两个整数:");
scanf("%d %d", &a, &b);
printf("%d 和 %d 的最大公约数是:%d\n", a, b, gcd(a, b));
return 0;
}
// 递归求最大公约数
int gcd(int a, int b) {
if (b == 0) {
return a;
} else {
return gcd(b, a % b);
}
}
```
希望能帮到您!
相关问题
给定两个正整数,求它们的最大公约数用c++代码
在 C++ 中,我们可以使用欧几里得算法(也称为辗转相除法)来计算两个正整数的最大公约数(Greatest Common Divisor,简称 GCD)。以下是使用递归的方式实现这个算法:
```cpp
#include <iostream>
// 辗转相除法求最大公约数
int gcd(int a, int b) {
if (b == 0) // 如果b为0,则a即为最大公约数
return a;
else
return gcd(b, a % b); // 递归地将较大的数替换为较小数与余数的商
}
int main() {
int num1, num2;
std::cout << "请输入两个正整数:";
std::cin >> num1 >> num2;
int result = gcd(num1, num2);
std::cout << "这两个数的最大公约数是:" << result << std::endl;
return 0;
}
```
当你运行上述代码时,它会提示输入两个正整数,然后计算并输出它们的最大公约数。
求两个正整数 x,y 的最大公约数。 设计一个递归算法,求解两个正整数 x,y 的最大公约数。给出代码
最大公约数也叫最大公因数,可以使用辗转相除法求解。递归算法的实现如下:
```
int gcd(int x, int y) {
if (x % y == 0) {
return y;
} else {
return gcd(y, x % y);
}
}
```
其中,当 y 能够整除 x 时,y 就是最大公约数;否则,继续递归调用 gcd 函数,将 y 和 x % y 传入,直到 y 能够整除 x。
完整代码如下:
```c++
#include <iostream>
using namespace std;
int gcd(int x, int y) {
if (x % y == 0) {
return y;
} else {
return gcd(y, x % y);
}
}
int main() {
int x, y;
cout << "请输入两个正整数:";
cin >> x >> y;
cout << "它们的最大公约数是:" << gcd(x, y) << endl;
return 0;
}
```
阅读全文