二分查找法
int mySqrt(int x) {
long long left = 0,right = x/2+1,mid;
while(left<=right){
mid = left + (right-left)/2;
long long res = mid*mid;
if(res==x)
return mid;
else if(res<x)
left = mid + 1;
else
right = mid - 1;
}
return right;
}
牛顿法
int mySqrt(int x) {
if(x==0) return 0;
double last = 0.0;
double res = 1.0;
while(last!=res){
last = res;
res = (res + x/res)/2;
}
return (int)res;
}