c语言求最大公约数(C语言求最大公约数的方法有哪些)

发布时间:2025-12-11 00:22:23 浏览次数:11

C语言求最大公约数的方法有以下几种:

辗转相除法:即用较大的数除以较小的数,然后用余数代替较大的数,再用较小的数除以余数,直到余数为0为止,此时较小的数即为最大公约数。
int gcd(int a, int b) {if (b == 0) {return a;}return gcd(b, a%b);}
更相减损法:即用较大的数减去较小的数,然后用差值代替较大的数,再用较小的数减去差值,直到两个数相等为止,此时相等的数即为最大公约数。
int gcd(int a, int b) {if (a == b) {return a;}if (a > b) {return gcd(a-b, b);}return gcd(a, b-a);}
移位法:当a和b都是偶数时,2是它们的公约数,然后将a和b都右移1位,再继续求最大公约数,直到其中一个为0,此时另一个数即为最大公约数的2的幂倍。
int gcd(int a, int b) {if (a == 0) {return b;}if (b == 0) {return a;}if ((a&1) == 0 && (b&1) == 0) {return 2 * gcd(a>>1, b>>1);}if ((a&1) == 0) {return gcd(a>>1, b);}if ((b&1) == 0) {return gcd(a, b>>1);}if (a > b) {return gcd(a-b, b);}return gcd(a, b-a);}

这些方法都可以用于求两个整数的最大公约数。

c语言求最大公约数
需要做网站?需要网络推广?欢迎咨询客户经理 13272073477