Išplėstinis Euklido algoritmas

Iš testwiki.
22:44, 3 vasario 2024 versija, sukurta imported>Nestea
(skirt) ← Ankstesnė versija | Dabartinė versija (skirt) | Vėlesnė versija → (skirt)
Pereiti į navigaciją Jump to search

Išplėstinis Euklido algoritmasEuklido algoritmo tęsinys, skirtas rasti dviejų natūraliųjų skaičių a,b didžiausią bendrą daliklį, bei rasti sveikuosius x, y, tenkinančius ax+by=dbd(a,b).[1]

Algoritmas

Nemažindami bendrumo tarkime, kad a>b Tuomet a užsirašo kaip

a=bq+r, kur dalybos liekana tenkina 0<r<b. Analogiškai

b=rq1+r1, kur 0<r1<r

r=r1q2+r2, kur 0<r2<r1

rk=rk+1qk+2+rk+2, kur 0<rk+2<rk+1

rk+1=rk+2qk+3

r>r1>...>rk+2 seka, kad kažkada gausime dalybos liekaną lygią 0. Tuomet paskutinioji nenulinė liekana rk+2 ir bus didžiausias bendrasis daliklis.

Iš prieš paskutinės lygybės galime išreikšti rk+2 per rk+1 ir rk. Iš dar ankstesnės galima išreikšti rk+1 per rk ir rk1. Įstatę į pirmąją išraišką gausime rk+2 išraišką per rk ir rk1. Taip toliau vis tęsdami gausime rk+2 išraišką per a, b, t. y. rasime x, y, tenkinančius ax + by = dbd(a, b)

Pavyzdys

Imkime a = 46, b = 32. Nuosekliai atlikdami veiksmus gauname:

46 = 32 × 1 + 14;

32 = 14 × 2 + 4;

14 = 4 × 3 + 2;

4 = 2 × 2;

Gavome, kad dbd(46,32) = 2.

2 = 14 + 4 × (-3) = 14 + (32 + 14× (-2)) × (-3) = 32 × (-3) + 14 × 7 = 32 × (-3) + (4632) × 7 = 32 × (-10) + 46 × 7.

Šaltiniai

Šablonas:Išnašos