这个问题是这篇文章的后续: 确定一个整数的平方根是否为整数的最快方法, 判断输入是否为完全平方数的好算法是什么?.
其中一篇帖子提供了以下解决方法来判断给定数字是否为
完全平方数
:public final static boolean isPerfectSquare(long n)
{
if (n < 0)
return false;
switch((int)(n & 0xF))
{
case 0: case 1: case 4: case 9:
long tst = (long)Math.sqrt(n);
return tst*tst == n;
default:
return false;
}
}
这是一个很好的解决方案,完全有效。但是没有详细解释它是如何工作或更重要的是这个解决方案是如何得出的。 我想知道这个解决方案是如何得出的。