Implement int sqrt(int x)
.
Compute and return the square root of x.
牛顿迭代法:关于牛顿迭代法,详解http://blog.youkuaiyun.com/niuooniuoo/article/details/51787807
public int mySqrt(int x) {
if (x == 0) return 0;
double last = 0.0;
double res = 1.0;
while (res != last) {
last = res;
res = (res + x / res) / 2;
}
return (int) res;
}
二分查找法
int sqrt(int x) {
long i = 0, j = x / 2 + 1;
while (i <= j) {
long mid = (i + j) / 2;
long sq = mid * mid;
if (sq == x) return (int) mid;
else if (sq < x) i = mid + 1;
else j = mid - 1;
}
return (int) j;
}
详解参考:http://www.cnblogs.com/AnnieKim/archive/2013/04/18/3028607.html