int gcd(int a,int b)
时间: 2023-12-26 20:05:05 浏览: 46
你好,我理解你想让我展示一个求最大公约数的函数。以下是使用辗转相除法求解两个整数的最大公约数(GCD)的 C++ 函数:
```
int gcd(int a, int b) {
int tmp;
while(b) {
tmp = a % b;
a = b;
b = tmp;
}
return a;
}
```
这个函数使用 while 循环和辗转相除法计算最大公约数。这段代码可以在 C++ 编译器中运行。希望能够帮到你!
相关问题
int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); }解释这段c++代码
这段代码实现的是求两个整数a和b的最大公约数(Greatest Common Divisor, 简称GCD)。
代码中使用了递归的方式来实现求解GCD,具体实现如下:
1. 如果b等于0,那么a就是最大公约数,直接返回a。
2. 否则,递归调用gcd函数,传入参数b和a%b(即a除以b的余数),继续求解最大公约数。
代码中使用了三目运算符(?:),它的作用是判断b是否等于0,如果等于0,返回a,否则返回gcd(b, a%b)的结果。这样就可以将代码写成一行。
需要注意的是,如果a和b中存在负数,那么需要对它们取绝对值后再进行求解。
完成程序,设计实现函数int gcd(int a,int b),其功能为计算给定的两个正整型数a和b的最大公约数。
以下是实现函数int gcd(int a,int b)的代码:
```c++
#include <iostream>
using namespace std;
int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
int main() {
int a, b;
cout << "请输入两个正整数a和b:" << endl;
cin >> a >> b;
cout << "最大公约数是:" << gcd(a, b) << endl;
return 0;
}
```
该函数使用了递归的方式计算最大公约数,如果b为0,则a为最大公约数,否则将b和a%b作为参数再次调用该函数。在main函数中,先输入两个正整数a和b,然后调用gcd函数计算最大公约数并输出。