经过(xi, f(xi))这个点的切线方程为f(x) = f(xi) + f’(xi)(x - xi),
其中f’(x)为f(x)的导数,本题中为2x。令切线方程等于0,即可求出xi+1=xi - f(xi) / f’(xi)。
继续化简:
xi+1
=xi - (xi2 - n) / (2xi)
= xi - xi / 2 + n / (2xi
= xi / 2 + n / 2xi
= (xi + n/xi) / 2。
class Solution {
public:
bool isPerfectSquare(int num) {
long long start = num;
while(start * start > num)
{
start = (start + num/start)/2;
}
if (start * start == num)
return true;
return false;
}
};