Полный квадрат — это целое число, которое является квадратом другого целого числа (например, 4, 9, 16). Задача состоит в том, чтобы определить, удовлетворяет ли данное целое число n этому условию.
Самый надёжный и эффективный метод использует встроенную функцию Python math.isqrt(), которая вычисляет целочисленный квадратный корень — наибольшее целое число, квадрат которого не превышает n — без каких-либо ошибок с плавающей запятой.
Логика сводится к трём шагам:
n с помощью math.isqrt(n)nimport math
def is_perfect_square(n):
if n < 0:
return False
root = math.isqrt(n)
return root * root == n
math.isqrt() предпочтительнее, чем math.sqrt(), потому что math.sqrt() возвращает float, что может приводить к ошибкам округления для больших чиселroot * root == n обеспечивает точное целочисленное сравнение, что гарантирует корректность результата0 и 1is_perfect_square(25) → True (потому что 5 × 5 = 25)is_perfect_square(26) → Falseis_perfect_square(-4) → FalseИспользование math.isqrt() вместо math.sqrt() исключает ошибки округления с плавающей точкой, которые могут привести к неправильным результатам для больших чисел.
Новый — ещё не проверен сообществом
Вы