我正在尝试编写一个if语句来检查用户输入数组的数字量是否是一个完美的正方形(4,9,25,36 ......)。
params[:controller] => 'admin/users'
controller_name => 'users'
我知道这不是正确的,我知道这可能很容易,但我似乎无法想到if语句,看看我的数组是否是一个完美的数字广场。
感谢任何帮助,谢谢。
答案 0 :(得分:2)
试试这个:
int root = (int)Math.sqrt(array.length);
boolean isSquare = root * root == array.length;
或
if ((int)Math.sqrt(array.length) == Math.sqrt(array.length))
还有其他方法,但他们都会使用平方根应该是整数的事实。
答案 1 :(得分:0)
其他语言也有类似的答案,但这个算法应该与您正在做的事情一起使用:
bool IsPerfectSquare(long input)
{
long SquareRoot = (long) Math.Sqrt(input);
return ((SquareRoot * SquareRoot) == input);
}
请参阅此链接以获取更多信息:
What's a good algorithm to determine if an input is a perfect square?