Documente Academic
Documente Profesional
Documente Cultură
În matematică, algoritmul lui Euclid este o metodă eficientă de calcul al celui mai
mare divizor comun (CMMDC). El este denumit după matematicianul grec Euclid, care
l-a descris în Cărțile VII și X din Elementele.[1]
CMMDC a două numere este cel mai mare număr care le divide pe ambele. Algoritmul
lui Euclid exploatează observația că cel mai mare divizor comun al două numere nu
se modifică dacă numărul cel mai mic este scăzut din cel mai mare. De exemplu, 21
este CMMDC al numerelor 252 și 105 (252 = 21 × 12; 105 = 21 × 5); întrucât 252 −
105 = 147, CMMDC al lui 147 și 105 este tot 21. Cum cel mai mare dintre cele două
numere este redus, repetarea acestui proces dă numere din ce în ce mai mici, până
când unul dintre ele este 0. Când se întâmplă aceasta, CMMDC este celălalt număr,
cel nenul. Inversând pașii algoritmului lui Euclid, CMMDC se poate exprima sub
formă de suma celor două numere inițiale, fiecare înmulțite cu un întreg pozitiv
sau negativ, de exemplu: 21 = 5 × 105 + (−2) × 252. Această proprietate importantă
se numește identitatea lui Bézout.
Prima descriere rămasă a algoritmului lui Euclid este lucrarea lui Euclid
intitulată Elementele (c. 300 î.e.n.), fiind unul dintre cei mai vechi algoritmi
numerici încă utilizați. Algoritmul original a fost descris doar pentru numere
naturale și lungimi geometrice (numere reale), dar algoritmul a fost generalizat în
secolul al XIX-lea și la alte tipuri de numere, cum ar fi întregii Gaussieni și
polinoamele de o variabilă. Aceasta a dus la noțiuni moderne de algebră abstractă,
cum ar fi inelele euclidiene. Algoritmul lui Euclid s-a generalizat și pentru alte
structuri matematice, cum ar fi nodurile și polinoamele multivariate.
Algoritmul lui Euclid calculează eficient CMMDC a două numere oricât de mari sunt,
deoarece nu necesită niciodată un număr de pași mai mare decât de cinci ori numărul
de cifre (în bază 10) al celui mai mic întreg. Gabriel Lamé a demonstrat aceasta în
1844, marcând începutul teoriei complexității computaționale. În secolul al XX-lea
s-au dezvoltat metode de îmbunătățire ale eficienței algoritmului.
Bazele
Cel mai mare divizor comun
Algoritmul lui Euclid calculează cel mai mare divizor comun (CMMDC) a două numere
naturale a și b. Cel mai mare divizor comun g este cel mai mare număr natural care
îi divide pe a și pe b. Cel mai mare divizor comun este adesea scris ca CMMDC(a, b)
sau, mai simplu, ca (a, b),[2] deși a doua notație matematică este utilizată și
pentru alte concepte matematice, cum ar fi vectorii bidimensionali sau intervalele
deschise.
CMMDC a trei sau mai multe numere este egal cu produsul factorilor primi comuni ai
tuturor celor trei numere,[12] care poate fi calculat luând CMMDC pe perechi de
numere.[13] De exemplu,
Procedură
Algoritmul lui Euclid este iterativ, adică răspunsul se găsește după un număr de
pași; rezultatul fiecărui pas este utilizat ca punct de început pentru pasul
următor.[21] Fie k un întreg care numără pașii algoritmului, începând cu zero.
Astfel, pasul inițial corespunde lui k = 0, pasul următor corespunde lui k = 1, și
așa mai departe.
Fiecare pas începe cu două resturi nenegative rk−1 și rk−2. Întrucât algoritmul
asigură că resturile scad la fiecare pas, rk−1 este mai mic decât predecesorul sau
rk−2. Scopul pasului k este găsirea câtului qk și a restului rk astfel încât să fie
satisfăcută ecuația:
rk−2 = qk rk−1 + rk
unde rk < rk−1. Cu alte cuvinte, multiplii celui mai mic număr rk−1 sunt scăzuți
din numărul mai mare rk−2 până când restul este mai mic decât rk−1.
În pasul inițial (k = 0), resturile r−2 și r−1 sunt chiar a și b, numerele al căror
CMMDC este căutat. În pasul următor (k = 1), resturile sunt b și restul r0 al
pasului inițial, și așa mai departe. Astfel, algoritmul poate fi scris ca o
secvență de ecuații
a = q0 b + r0
b = q1 r0 + r1
r0 = q2 r1 + r2
r1 = q3 r2 + r3
…
Dacă a este mai mic decât b, primul pas al algoritmului schimbă numerele între ele.
De exemplu, dacă a < b, câtul inițial q0 este zero, iar restul r0 este a. Astfel,
rk este mai mic decât predecesorul său rk−1 pentru orice k ≥ 0.
Întrucât resturile scad la fiecare pas dar nu pot fi niciodată negative, un rest rN
trebuie în cele din urmă să fie zero, moment în care algoritmul se oprește.[20]
Ultimul rest nenul rN−1 este cel mai mare divizor comun al lui a și b. Numărul N nu
poate fi infinit deoarece există doar un număr finit de numere nenegative întregi
între restul inițial r0 și zero.