最大公约数(Greatest Common Divisor ) 与 最小公倍数(Lowest Common Multiple )
2012-04-01 18:35
639 查看
今天开始准备做个系列,专门存快速简洁的算法代码。当然了,共享是必需的!
如果只用到 gcd 就只需贴第一个函数,要用到 lcm 就全贴上。
2012/5/11 更新:与斐波拉契数列的关系
欧几里德算法(求最大公约数)的效率分析
欧几里德算法据说是史上第一个算法,这两个古老的算法也有重要的交集。首先给出F(n)的一个性质(可通过数学归纳法证明):
![](http://pic002.cnblogs.com/images/2012/12089/2012041900041073.gif)
然后通过辗转相除法的定义和F(n)的这个性质可以证明:欧几里德算法求解GCD(a, b)时使用的除法次数不大于b的十进制位数的5倍。再由对数的性质可以得出欧几里德算法使用O(logb)次除法就可以求出GCD(a, b)。
(涉及很多公式书写,这里证明从略,具体过程可参考《离散数学及其应用》的3.4节)转自:http://code.zc4u.com/articles/726.html
2012/6/1
linux源码:
如果只用到 gcd 就只需贴第一个函数,要用到 lcm 就全贴上。
int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); } int lcm(int a, int b) { return a / gcd(a, b) * b; }
2012/5/11 更新:与斐波拉契数列的关系
欧几里德算法(求最大公约数)的效率分析
欧几里德算法据说是史上第一个算法,这两个古老的算法也有重要的交集。首先给出F(n)的一个性质(可通过数学归纳法证明):
![](http://pic002.cnblogs.com/images/2012/12089/2012041900041073.gif)
然后通过辗转相除法的定义和F(n)的这个性质可以证明:欧几里德算法求解GCD(a, b)时使用的除法次数不大于b的十进制位数的5倍。再由对数的性质可以得出欧几里德算法使用O(logb)次除法就可以求出GCD(a, b)。
(涉及很多公式书写,这里证明从略,具体过程可参考《离散数学及其应用》的3.4节)转自:http://code.zc4u.com/articles/726.html
2012/6/1
linux源码:
/* Greatest common divisor */ unsigned long gcd(unsigned long a, unsigned long b) { unsigned long r; if (a < b) swap(a, b); while ((r = a % b) != 0) { a = b; b = r; } return b; }
相关文章推荐
- Great Common Divisor & Least Common Multiple(最大公约数和最小公倍数)
- Great Common Divisor & Least Common Multiple(最大公约数和最小公倍数)
- 最大公约数(Greatest Common Divisor)
- GCD (greatest common divisor)【求最大公约数】
- Calculate the Greatest Commom Divisor (GCD) and Lowest Common Multiple (LCP) of Two Integers
- The greatest common divisor gcd(最大公约数)
- hdu 2028 Lowest Common Multiple Plus(最大公约数最小公倍数)(备战LQB)
- Euclid Greatest Common Divisor-GCD - 欧几里得 最大公约数
- 算法分析---求最大公约数 gcd(int x,int y) (greatest common divisor )
- 最大公约数GCD(Greatest Common Divisor)算法小结
- 最大公约数(Greatest Common Divisor)
- 最大公约数 和最小公倍数。(max Common Divisor min common multiple)
- HDU-1019-Least Common Multiple( 最大公约数 && 最小公倍数 && GCD )
- pyschool_Lowest Common Multiple_t5_q13(最大公约数)
- HDU--IMNU集训四:Lowest Common Multiple Plus n个数的最大公约数 递归啊GCD啊之类的
- 最大公约数(greatest common divisor)算法
- hdu 2028 Lowest Common Multiple Plus 求最小公倍数
- 最大公约数最小公倍数 (例:HDU2028 Lowest Common Multiple Plus)
- HDU 2028 Lowest Common Multiple Plus(求n个数的最小公倍数)
- 最大公约数最小公倍数 (例:HDU2028 Lowest Common Multiple Plus)