Algorytm Euklidesa

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.

Algorytm Euklidesa

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.