`
kanwoerzi
  • 浏览: 1647751 次
文章分类
社区版块
存档分类
最新评论

精彩的手动开方算法

 
阅读更多

这次做项目发现一个开方算法很有意思.

老外写的注释说的也是puzzle.

对于这个算法我也是想了很久才想通了.

现将这算法给出来共享共享.

static int SQRT (int nRoot)
{
int nSqrt = 0;

for(int i = 0x10000000; i != 0; i >>= 2)
{
int nTemp = nSqrt + i;
nSqrt >>= 1;
if(nTemp <= nRoot)
{
nRoot -= nTemp;
nSqrt += i;
}
}
return nSqrt;
}

注意这个算法用到了(a+b)(a+b)=a*a+b*b+2ab

还有4是最小的可开方尽的整数(除了1)

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics