Share to: share facebook share twitter share wa share telegram print page

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

i a b q r α2i α1i β2i β1i
0 427 133 1 0 0 1
1 133 28 3 28 0 1 1 -3
2 28 21 4 21 1 -4 -3 13
3 21 7 1 7 -4 5 13 -16
4 7 0 3 0 5 -19 -16 61

Související články

Kembali kehalaman sebelumnya