摘要:偶然在浏览的时候发现这篇博文,讲的是sqrt的快速精确实现方法,基本原理是牛顿迭代法,其中提到了一个magic number用于计算牛顿迭代的初始值,实在是太绝了。引述此文,以供后续咂摸。呵呵。一个Sqrt函数引发的血案好吧,我承认我标题党了,不过既然你来了,就认真看下去吧,保证你有收获。我们平时经常会有一些数据运算的操作,需要调用sqrt,exp,abs等函数,那么时候你有没有想过:这个些函数系...
阅读全文
摘要:欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理:定理:gcd(a,b) = gcd(b,a mod b)其算法用C++语言描述为:int gcd(int m, int n){if (m == 0)return n;if (n == 0)return m;if (m < n){int tmp = m;m = n;n = tmp;}while (n !...
阅读全文
摘要:自从转载了来自圣经的算法一文后,就想把这些算法比较详细地搞清楚,先拿辗转相除法开刀了,谁让她最简单呢。呵呵。 下面的大部分内容来自维基百科。 辗转相除法,又被称为欧几里德(Euclidean)算法, 是求最大公约数的算法。辗转相除法首次出现于欧几里得的《几何原本》(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的《九章算术》。 两个数的最大公约数是指能同时整除它们的最大正整数。辗...
阅读全文