二分法,注意溢出问题。
double getSqrt(int x,double precision) {
double left = 0, right = x;
while (1) {
double mid = left + (right - left) / 2;
if (abs(x /mid - mid) < precision) return mid;
else if (x / mid > mid) left = mid + 1;
else right = mid - 1;
}
}