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ștemath.isqrt.
Comenzi înrudite
math.pow(), exp(), exp2() și expm1(): Ridicarea la putere în virgulă mobilă și funcțiile exponențiale.math.hypot() și math.dist(): Lungimea unui vector (ipotenuza) și distanța euclidiană dintre două puncte.pow(): Ridică un număr la o putere; opțional, calculează rapid restul împărțirii rezultatului la mod.