Проверка, является ли длина массива идеальным квадратом
Я пытаюсь написать оператор if, чтобы проверить, является ли количество чисел, введенных пользователем в массив, идеальным квадратом (4, 9, 25, 36...).
if(array.length != Math.sqrt(array))
Я знаю, что это неправильно, и я знаю, что это, вероятно, что-то легкое, но я не могу понять, как придумать оператор if, чтобы увидеть, является ли мой массив числом, представляющим собой идеальный квадрат.
Любая помощь приветствуется, спасибо.
2 ответа
Попробуй это:
int root = (int)Math.sqrt(array.length);
boolean isSquare = root * root == array.length;
Или же
if ((int)Math.sqrt(array.length) == Math.sqrt(array.length))
Есть и другие способы, но все они будут использовать тот факт, что квадратный корень должен быть целым числом.
Есть похожие ответы для других языков, но этот алгоритм должен работать с тем, что вы делаете:
bool IsPerfectSquare(long input)
{
long SquareRoot = (long) Math.Sqrt(input);
return ((SquareRoot * SquareRoot) == input);
}
см. эту ссылку для получения дополнительной информации:
Какой хороший алгоритм, чтобы определить, является ли вход идеальным квадратом?