GCD,即最大公约数,指两个或多个整数共有约数中最大的一个,比如正整数12和18的最大公约数是6,GCD算法就是求解两个正整数的最大公约数。GCD算法的核心是欧几里得算法(又称“辗转相除法”),它基于一个简洁的数学原理:两个正整数 a 和 b 的最大公约数,等于 a 除以 b 的余数 r 与 b 的最大公约数,即 gcd(a, b) = gcd(b, a mod b)。这个过程通过反复用较小的数替换较大的数,并用余数替换较小的数,直到余数为零,此时剩下的非零数就是两者的最大公约数。
1. C/C++版代码:
int gcd(int a, int b) {
// 递归终止条件:余数为0时,除数即为最大公约数
if (b == 0) return a;
// 递归调用:继续用除数和余数进行计算
return gcd(b, a % b);
}2. Java版代码:
public static int gcd(int a, int b) {
// 递归终止条件:余数为0时,除数a即为最大公约数
if (b == 0) return a;
// 递归调用:用较小的数(b)和余数(a%b)继续计算
return gcd(b, a % b);
}3. Python版代码:
def gcd(a, b): # 递归终止条件:余数为0时,除数a即为最大公约数 if b == 0: return a # 递归调用:用较小的数(b)和余数(a%b)继续计算 return gcd(b, a % b)
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程