Python Glossary English

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Сообщить о неточности