Существует ли целочисленный квадратный корень где-то в python или в стандартных библиотеках? Я хочу, чтобы он был точным (т.е. Возвращал целое число) и лаял, если нет решения.
В настоящий момент я свернул свой собственный наивный:
def isqrt(n):
i = int(math.sqrt(n) + 0.5)
if i**2 == n:
return i
raise ValueError('input was not a perfect square')
Но это уродливо, и я действительно не доверяю ему для больших целых чисел. Я мог бы перебирать квадраты и сдаваться, если бы я превысил ценность, но я предполагаю, что было бы слишком медленно делать что-то подобное. Также я предполагаю, что, вероятно, буду изобретать колесо, что-то вроде этого наверняка существует в python уже...