一:更相减损术
举例:求gcd(最大公约数)18 4
18 - 4 = 14
14 - 4 = 10
10 - 4 = 6
6 - 4 = 2
4 - 2 = 2 ——> 相等 gcd = 2;
二:辗转相除法
18 % 4 = 2
4 % 2 = 2
2 % 2 = 0 ——> gcd = 2
gcd (a, b) = gcd(a - b, b) = gcd(a - 2b , b) = gcd(a - k*b, b) = gcd(a % b, b)
代码:
#include<bits/stdc++.h>
using namespace std;
int my_gcd(int a, int b)
{
// if(b == 0)
// return a;
// else
// return my_gcd(b, a%b);
return b == 0 ? a :my_gcd(b, a % b);
}
int main()
{
int a, b;
cin >> a >> b;
cout << my_gcd(a,b);
return 0;
}
本文介绍了求解两个整数最大公约数(GCD)的两种方法,包括传统数学中的更相减损术和基于辗转相除法的C++代码实现。通过实例和my_gcd函数展示了如何计算18和4的最大公约数。
算法&spm=1001.2101.3001.5002&articleId=135621067&d=1&t=3&u=79f64d03a57349649838aba5f7617f37)
2194

被折叠的 条评论
为什么被折叠?



