算法步骤
- 将
m分解质因数; - 将
n分解质因数; - 提取
m和n中的公共质因数; - 将
m和n中的公共质因数相乘, 乘积作为结果输出;
C++实现
int gcd(int m, int n) {
int res = 1;
for (int i = 2; i <= m / i || i <= n / i; i++) {
bool mflag = false, nflag = false;
int mcnt = 0, ncnt = 0;
if (m % i == 0) {
while (m % i == 0) {
m /= i;
mflag = true;
mcnt++;
}
}
if (n % i == 0) {
while (n % i == 0) {
n /= i;
nflag = true;
ncnt++;
}
}
if (mflag && nflag) {
int cnt = min(mcnt, ncnt);
while (cnt--) res *= i;
}
}
if (m == n) res *= m;
return res;
}
该博客详细介绍了如何使用C++编程语言实现求两个整数的最大公约数(GCD)的算法。通过分解质因数并提取公共因数的方法,最终得到两个数的最大公约数。提供的代码示例清晰地展示了这一过程。
1万+

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



