math.sqrt(), math.isqrt() și math.cbrt() în Python

Numere și matematică Python 3.0+ (isqrt: 3.8+, cbrt: 3.11+)

Rădăcina pătrată (zecimală sau întreagă) și rădăcina cubică.

Sintaxă
math.sqrt(x)
math.isqrt(n)
math.cbrt(x)

Ce face math.sqrt(), math.isqrt() și math.cbrt()

math.sqrt(x) returnează rădăcina pătrată ca float; pentru x negativ aruncă ValueError (pentru numere complexe există cmath.sqrt). math.cbrt(x) (Python 3.11+) dă rădăcina cubică și funcționează și pe numere negative.

math.isqrt(n) (Python 3.8+) returnează partea întreagă a rădăcinii pătrate a unui întreg, exact, chiar și pentru numere uriașe unde sqrt ar pierde precizie. Este ideală pentru a verifica pătratele perfecte.

Parametri

Parametru Descriere
x Un număr (nenegativ pentru sqrt).
n Un întreg nenegativ, pentru isqrt.

Ce returnează

sqrt, cbrt: float. isqrt: int.

Exemple

Exemplul 1: Rădăcini

import math
print(math.sqrt(16), math.sqrt(2))
print(math.isqrt(17), math.cbrt(27), math.cbrt(-8))
try:
    math.sqrt(-1)
except ValueError as e:
    print("Eroare:", e)

Rezultat

4.0 1.4142135623730951
4 3.0 -2.0
Eroare: expected a nonnegative input, got -1.0

Exemplul 2: Pătrate perfecte și ipotenuza

import math
def e_patrat_perfect(n):
    r = math.isqrt(n)
    return r * r == n

print([n for n in range(1, 50) if e_patrat_perfect(n)])
a, b = 3, 4
print("Ipotenuza:", math.sqrt(a ** 2 + b ** 2))

Rezultat

[1, 4, 9, 16, 25, 36, 49]
Ipotenuza: 5.0

Greșeli frecvente

  • Verifici un pătrat perfect cu math.sqrt(n).is_integer() pe numere foarte mari și obții rezultate greșite din cauza preciziei. Folosește math.isqrt.

Comenzi înrudite