Page 40 - MATINF Nr. 11-12
P. 40

40                                                                                       V. P˘aun



                  if(a%2==0) return cmmdcStein(a/2, b);
                  if(b%2==0) return cmmdcStein(a, b/2);
                  if(a>b) return cmmdcStein(a-b, b);
                  return cmmdcStein(a,b-a);
                 }



            3    Algoritmul extins al lui Euclid



                                                  a
            Algoritmul extins al lui Euclid rezolv˘ urm˘atoarea problem˘a:
                Fiind dat , i doi ˆıntregi a s , i b care nu sunt simultan 0, s˘a se determine cel mai mare divizor
            comun al lor, d s , i doi ˆıntregi m s , i n astfel ˆıncˆat m · a + n · b = d (Identitatea lui B´ezout).

                Pentru obt , inerea identit˘at , ii m · a + n · b = d, se pleac˘ de la relat , iile:
                                                                      a
                                                     1 · a + 0 · b = a,                                   (3)



                                                     0 · a + 1 · b = b,                                   (4)

            dac˘ a ≥ 0 s , i b ≥ 0.
                a
                    a
                Dac˘ a < 0, relat , ia (3) se ˆınlocuies , te cu
                                                   −1 · a + 0 · b = −a.


            Dac˘ b < 0, relat , ia (4) se ˆınlocuies , te cu
                a
                                                  0 · a + (−1) · b = −b.


                Fie m = 1, n = 0 s , i m 1 = 0, n 1 = 1.

                Obt , inem relat , iile:
                                                    m · a + n · b = a,                                    (5)



                                                   m 1 · a + n 1 · b = b.                                 (6)
                                                                           a
                                                                                 a
                                                    a
            Cum cel mai mare divizor comun a dou˘ numere nu se modific˘ dac˘ din num˘arul cel mai mare
                                                 a
            sc˘adem num˘arul mai mic, deducem c˘ prin repetarea procesului de reducere prin sc˘adere aplicat
            ˆıntre relat , iile (5) s , i (6) ajungem ˆın situat , ia ˆın care una din relat , ii are membrul drept egal cu
            zero.
                Cealalt˘ relat , ie ne furnizeaz˘ cel mai mare divizor comun s , i coeficient , ii m s , i n ai Identit˘t , ii
                                                                                                         a
                       a
                                            a
            lui Bezout.
                Dac˘ a > b, prin sc˘adere obt , inem relat , ia
                    a
                                            (m − m 1 )a + (n − n 1 )b = a − b.


                Adic˘ m ← m − m 1 si n ← n − n 1 s , i continu˘am cu
                     a
                                                    m · a + n · b = a,
   35   36   37   38   39   40   41   42   43   44   45