当前位置: 代码迷 >> 综合 >> 手动开方算法
  详细解决方案

手动开方算法

热度:95   发布时间:2024-01-19 19:39:23.0
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)
  相关解决方案