Algorytm Euklidesa – algorytm znajdowania największego wspólnego dzielnika (NWD) dwóch liczb naturalnych. Nie wymaga rozkładania liczb na czynniki pierwsze. Algorytm wymyślił Eudoksos z Knidos (IV wiek p.n.e.), a Euklides jedynie zawarł go w swoim dziele Elementy.
W algorytmie wykorzystywana jest zależność
,
, 0
, , 1
Algorytm
Przebieg algorytmu Euklidesa obliczania NWD liczb a i b: 1. oblicz c jako resztę z dzielenia a przez b
2. zastąp pozycję a liczbą b, a pozycję b liczbą c 3. jeżeli pozycja b = 0, to szukane NWD = a, w przeciwnym wypadku przejdź do 1
Przykład
0. a = 1071, b = 1029
1. c = 1071 mod 1029 = 42
2. a = 1029, b = 42
3. czy b = 0? N
4. c = 1029 mod 42 = 21
5. a = 42, b = 21
6. czy b = 0? N
7. c = 42 mod 21 = 0
8. a = 21, b = 0
9. czy b = 0? T
10. NWD(1071,1029) = 21
Dowód poprawności
Lemat:
NWD(a,b) = NWD(b, a mod b)
Aby to wykazać, należy udowodnić, że wspólny podzielnik liczb a i b jest również podzielnikiem liczby a mod b.
Przyjmijmy:
d = NWD(a,b), stąd a = sd, b = td
r = a mod b, stąd a = pb + r
gdzie s, t, p są liczbami całkowitymi.
Wtedy:
r = a - pb = sd - ptd = d(s - pt)
zatem d jest również podzielnikiem r.