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;
    }
=========================================================
觉得很不错。缺点就是 5开方 = 2
有没有哪位大虾 的算法支持小数的。
比如 5开方 = 2.几
支持 5.8开方的?

解决方案 »

  1.   

    开根号的应该是 Math.pow(sqrt);==============
      

  2.   

    您好为什么你的FOR循环我写的看不懂啊。。
      

  3.   

    for (int i = 0x10000000; i != 0; i >>= 2) {
                int nTemp = nSqrt + i;
                nSqrt >>= 1;
                if (nTemp <= nRoot) {
                    nRoot -= nTemp;
                    nSqrt += i;
                }
            }
    这个for循环写得牛啊
      

  4.   

    little06(火) ( ) 信誉:98    Blog 想法不错。