【数学】求两个正整数的最大公约数

来源:互联网 发布:收购淘宝账号 编辑:程序博客网 时间:2024/06/06 01:41

题目:《编程之美》 P150

//辗转相除法int GCD1(int a,int b){if (a < b)swap(a, b);if (b == 0)return a;return GCD1(a % b, b);}//利用减法int GCD2(int a, int b){if (a < b)swap(a, b);if (b == 0)return a;return GCD2(a - b, b);}//方法一和方法二相结合int GCD3(int a, int b){if (a < b)swap(a, b);if (b == 0)return a;bool marka = a & 1, markb = b & 1;if (marka && markb){return GCD3(a - b, b);}else if (!marka && !markb){return ( GCD3(a >> 1, b >> 1) )<<1;//不要忘了乘以2}else if (!marka && markb){return GCD3(a >> 1, b);}else{return GCD3(a, b >> 1);}}


0 0