Algorytm Euklidesa
Transkrypt
Algorytm Euklidesa
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.