📅  最后修改于: 2023-12-03 15:00:52.864000             🧑  作者: Mango
GCD(Greatest Common Divisor)是最大公约数的缩写,它是两个或多个整数共有的约数中最大的一个。
在程序开发中,GCD是一种常用的算法,它可以用于解决多种问题,例如:
C++中有多种方法可以求解两个数的最大公约数,下面分别介绍几种常用方法。
辗转相除法也称欧几里得算法,它是一种基于递归的算法,可以快速求出两个数的最大公约数。下面是用辗转相除法求解最大公约数的代码片段:
int gcd(int a, int b) {
return b == 0 ? a : gcd(b, a % b);
}
注:上述代码中,用到了三目运算符,它的语法格式为:条件表达式 ? 表达式1 : 表达式2
,如果条件表达式为真,则返回表达式1的值,否则返回表达式2的值。
更相减损术也是一种求解最大公约数的算法,它的基本思想是:用两个数的差来替代其中较大的那个数,并不断重复这个过程,直到两个数相等或者其中一个数变为0。下面是用更相减损术求解最大公约数的代码片段:
int gcd(int a, int b) {
if (a == b) {
return a;
} else if (a > b) {
return gcd(a - b, b);
} else {
return gcd(a, b - a);
}
}
C++标准库中还提供了一些求解最大公约数的STL算法,例如:
下面是用__gcd()
和std::gcd()
求解最大公约数的代码片段:
int a = 12, b = 18;
int ans1 = __gcd(a, b);
int ans2 = std::gcd(a, b);
GCD作为程序员的基础知识之一,掌握其求解方法可以帮助我们更好地完成程序开发。以上介绍的方法仅是众多求解GCD的方法之一,读者可以在实际开发中根据具体情况选择最合适的方法。