Python 3.8+Числа и математикафункция
math.isqrt
корни/степени
Целочисленный квадратный корень: округляет √n вниз до целого (для точной арифметики).
Синтаксис
math.isqrt(...)
Привычное int(n ** 0.5) или int(math.sqrt(n)) считает через float и на больших числах (примерно от 2**52) начинает ошибаться на единицу — isqrt работает в целочисленной арифметике и точен для любого n. Аргумент обязан быть целым: float даёт TypeError, отрицательное число — ValueError, а не nan. Функция появилась в Python 3.8.
Примеры
import math
print(math.isqrt(17)) # → 4
print(math.isqrt(16)) # → 4
n = 49; print(math.isqrt(n) ** 2 == n) # → True
n = 10 ** 18 - 1; print(math.isqrt(n)) # → 999999999
print(int(math.sqrt(n))) # → 1000000000
print(math.isqrt(-1)) # → ValueError
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности