完全平方数
方法一,利用sqrt函数
原理
- 判断开平方的数是不是一个整数
注意:
- 1,不能判断一个浮点数是不是整数--可以利用向下取整进行判断。
- 2,sqrt返回的是double类型,要强转Int进行向下取整。
需备知识
- double强转int,是只取整数,而不是四舍五入。
源码
bool isPerfectSquare(int num)
{
int x = (int)sqrt(num);
return x * x == num;
}
方法二,利用等差数列的和
原理
-
根据等差数列的求和公式
-
让num从1开始减按上式数据开始减,如果num是一个完全平方数,那么它最终会减成0,而如果不是一个完全平方数,那么num最后会小于0。
源码
bool isPerfectSquare(int num)
{
if (num < 2) return true;
int sub = 1;
while(num > 0)
{
num -= sub;
sub += 2;
}
return num == 0;
}
方法三,二分查找
---待定
方法四,牛顿迭代法
--待定
测试链接
版权声明:
作者:徐锦桐
链接:https://www.xujintong.com/2023/02/11/163/
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
作者:徐锦桐
链接:https://www.xujintong.com/2023/02/11/163/
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
THE END