给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。
说明:不要使用任何内置的库函数,如 sqrt
。
示例 1:
输入:16
输出:True
示例 2:
输入:14
输出:False
思路: 直接算,注意i的范围可以取巧。
bool isPerfectSquare(int num)
{
long int i;
for(i = 0; i * i <= num; i++) {
if(i * i == num)
return true;
}
return false;
}
法2,网上看到的,完全平方数的性质:必然为奇数之和
1 = 1
4 = 1 + 3
9 = 1 + 3 + 5
16 = 1 + 3 + 5 + 7
...
bool isPerfectSquare(int num)
{
int sum = 1;
while(num > 0) {
num -= sum;
sum += 2;
}
return num == 0;
}