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)