Implementint sqrt(int x)
.
Compute and return the square root ofx.
分二分法和牛顿迭代法两种解法,详细请看:
http://blog.youkuaiyun.com/kenden23/article/details/14543521
二分法:
//2014-2-20 update
int sqrt(int x)
{
double e = 0.0000001;
double a = 0, b = x;
double m = a + ((b-a)/2);
double res = m*m - double(x);
while (abs(res) > e)
{
if (res < 0) a = m+1;
else b = m-1;
m = a + ((b-a)/2);
res = m*m - double(x);
}
return m;
}
牛顿迭代法:
//2014-2-20 update
int sqrt(int x)
{
if (x == 0) return 0;
double xi1 = x, xi = 1;
while (int(xi1) != int(xi))
{
xi = xi1;
xi1 = (double(x)/xi + xi)/2;
}
return xi;
}