bool isSqr(int n)
{
int a = int(sqrt(n) + 0.5);
return a * a == n;
}
bool isSqr(int n)
{
int a = (int)(sqrt(n) + 0.0001);
return a * a == n;
}
bool isSqr(int n)
{
int a = (int)sqrt(n * 1.0);
if(a*a == n || (a+1)*(a+1) == n || (a-1)*(a-1) == n)
return true;
return false;
}
bool isSqr(int n)
{
int a = (int)(sqrt(n * 1.0));
return a * a == n;
}
个人倾向于使用第一种写法. 第二种和第一种其实差不多.
第三种, 需要判断(a-1)*(a-1) == n 吗? 我觉得不需要.
第四种, 基本上是错误的, 可能会漏掉某些完全平方数. 除非sqrt(n) >= n^0.5 恒成立.
本文提供了几种判断一个整数是否为完全平方数的方法,并对比了它们的准确性和效率。作者认为第一种方法最为简洁有效。
1万+

被折叠的 条评论
为什么被折叠?



