1、题目描述
给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。
说明:不要使用任何内置的库函数,如 sqrt。
2、示例
输入:16
输出:True
3、题解
基本思想:牛顿迭代法,f(x)=x^2-N,求f(x)=0时,x的值。初始x=N,不断求x位置的切线与x轴的交点作为新的x,如此反复,直至x^2与N差值小于1,便得到sqrt(N)的整数部分。初始点(x0,x0^2-N),y`=2*x0,得到切线方程y-(x0^2-N)=2*x0(x-x0),当y=0时得x=(x0-N/x0)/2。
#include
#include
#include
#include
#include