编程之美最大公约数
2012-09-16 22:12
162 查看
还好看到了,这个以前好早见到过。
用得是辗转相除法。
k =x/y b=x%y 则 x = ky+b
如果一个整数能够同时整除x和y,则必能同时整除b和y;而能够同时整除b和y的数也必能同时整除x和y
即 x,y和b和y的公约数相同
因此代码很简洁
int gcd(int x,int y) { return (!y)?x:gcd(y,x%y); }
编程之美第二种思路做了一定的扩展
x,y 的公约数和x-y,y的公约数相同
int gcd(int x,int y) { if(x<y) gcd(y,x); if(y==0) return x; return gcd(x-y,y); }
相关文章推荐
- 编程之美 2.7最大公约数问题
- 编程之美——最大公约数问题
- 编程之美: 第二章 数字之魅 2.7最大公约数问题
- 《编程之美》——最大公约数问题
- 《编程之美》学习笔记之 最大公约数问题
- 《编程之美》---精确表达浮点数子问题---辗转相除法求取最大公约数
- 编程之美之2.7 最大公约数问题
- 编程之美 2.7 最大公约数问题
- 《编程之美》2.7 最大公约数问题解法3改进
- 编程之美2.7最大公约数问题Java版
- 编程之美2.7 最大公约数问题
- 编程之美2.7——最大公约数问题
- 编程之美最大公约数
- 最大公约数(《编程之美》)
- 编程之美: 最大公约数
- 编程之美2.6-2.7 最大公约数
- 最大公约数和最小公倍数(编程之美2.7)
- 《编程之美》最大公约数问题之循环解法
- 编程之美--最大公约数问题
- 编程之美2.7 最大公约数问题