Rozšířený Eukleidův algoritmus

Rozšířený Eukleidův algoritmus je algoritmus, kterým lze nalézt Bézoutovu rovnost, neboli vyjádření největšího společného dělitele dvou čísel jejich lineární kombinací.

Příklad

Vstup: Přirozená čísla a, b, kde a ≥ b ≥ 0
Výstup: d = NSD(a,b) a celá čísla α, β splňující podmínku d = α·a + β·b
  1. Je-li b = 0, položte d:=a, α:=1, β:=0 a skončete
  2. Položte i:= 0, α20:= 1, α10:= 0, β20:= 0, β10:= 1
  3. Dokud b > 0 dělejte následující: i:= i+1
    1. Spočtěte q a r tak, že a = q·b + r, 0 ≤ r < b
    2. Položte α2i:= α1i-1, α1i:= α2i-1 - q*α1i-1, β2i:= β1i-1, β1i:= β2i-1 - q*β1i-1
    3. Položte a:= b, b:= r

Položte d:= a, α:= α2i, β:= β2i

NSD(427, 133) = α · 427 + β · 133

Výsledkem uvedeného příkladu je NSD(427, 133) = 7

Bezoutovu rovnost lze zapsat 7 = 5 · 427 + -16 · 133

iabqrα2iα1iβ2iβ1i
04271331001
113328328011-3
228214211-4-313
321717-4513-16
470305-19-1661

Související články