Целочисленный квадратный корень в питоне

Есть ли целочисленный квадратный корень где-нибудь в 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 ...

Ответы на вопрос(10)

Ваш ответ на вопрос