Page 33 - MATINF Nr. 13-14
P. 33

a
            Teorema chinezeasc˘ a resturilor                                                               33


            int TCR(long long a[],long long m[],int n, long long &x, long long &M )
            {
                M = 1;
                for (int i = 0; i < n; i++)
                     M *= m[i];
                x = 0;
                for (int i = 0; i < n; i++) {
                     long long Mi = M / m[i];
                     long long yi = invers(Mi, m[i]);
                     if(yi==0) return 0;
                     x += a[i] * Mi * yi;
                }
                 x = (x % M + M) % M;
                 return 1;
            }

            int main() {
                long long a[100], m[100];
                int n;
                cout<<''Numar congruente de forma x=a(mod m) :'';
                cin >> n;
                cout<<''Tastati ''<<n<<'' congruente (a,m):''<<endl;
                for (int i = 0; i < n; i++)
                     cin >> a[i] >> m[i];
                long long x, M;
                int r=TCR(a,m,n,x,M);
                if(r)cout <<''solutie: ''<< x<<''(mod ''<<M<<'')'';
                else cout<<''Metoda nu se poate aplica: modulele nu sunt prime intre ele'';
                return 0;
            }


            Cˆand modulele m 1 , m 2 , . . . , m k nu sunt prime ˆıntre ele (adic˘a cel put , in dou˘a au un divizor
            comun mai mare ca 1), algoritmul clasic prezentat anterior nu poate fi aplicat direct deoarece
                                            a
            inversele modulare s-ar putea s˘ nu existe.
                ˆ
                In acest caz, sistemul de ecuat , ii poate s˘a nu aib˘a nicio solut , ie sau s˘a aib˘a o solut , ie unic˘a
            modulo [m 1 , m 2 , . . . , m k ] (cel mai mic multiplu comun).

                   a
                lat˘ pas , ii de rezolvare:
                                       a
                1. Condit , ia de existent , ˘ (Criteriul de consistent , ˘a)
                Pentru ca un sistem de dou˘a ecuat , ii:

                x ≡ a 1 (mod m 1 )

                x ≡ a 2 (mod m 2 )
            s˘a aib˘a solut , ie, trebuie neap˘arat ca a 1 − a 2 s˘a fie divizibil cu cmmdc(m 1 , m 2 ). Dac˘a aceast˘a
            condit , ie nu este ˆındeplinit˘a, sistemul este inconsistent (nu exist˘a niciun x care s˘a satisfac˘a
            ambele condit , ii).

                2. Metoda rezolv˘arii succesive (Metoda substitut , iei)
                                                                   a
                    a
                Dac˘ solut , ia exist˘a, nu mai folosim formula direct˘ cu M i , ci reducem sistemul pas cu pas.
   28   29   30   31   32   33   34   35   36   37   38