Проверка, является ли длина массива идеальным квадратом

Я пытаюсь написать оператор 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);
}

см. эту ссылку для получения дополнительной информации:

Какой хороший алгоритм, чтобы определить, является ли вход идеальным квадратом?

Другие вопросы по тегам