Teorema chinezeasca a resturilor si JavaScript

S-a propus la olimpiada o problema preluata din Gazeta Matematica numarul 6-7-8/2014

Intr-o scoala sunt intre 750 si 820 elevi.
Dacă elevii se încolonează câte 13, atunci rămân neîncolonaţi 10 elevi,
iar dacă elevii se încolonează câte 6, atunci rămân 2 elevi neîncolonaţi.

Problemele de acest tip se rezolva de obicei prin adaugarea unui numar de elevi, o completare astfel incat numarul sa fie divizibil si cu 13 si cu 6. Se cauta cel mai mic multiplu comun, al lui 13 si 6 (in acest caz 13*6 pentru ca 13 si 6 sunt relativ prime), apoi se cerceteaza printre multiplii lui 78 cel cuprins intre 750 si 820.

Dificultatea apare la completare, adaugam 3 elevi pentru a completa randurile de 13 si 4 elevi pentru a completa randurile de 6 elevi. 3!=(diferit)4.

e=13*k+10 si e=6*l+2 reprezinta traducerea problemei din limbajul cuvintelor in limbajul matematic al sistemului de 2 ecuatii cu 3 necunoscute naturale, unde evident e reprezinta numarul elevilor.

Inmultim ambele ecuatii cu 2

2*e=M13 + 20 si 2*e= M6 + 4, dar 20 =13+7 si 2*e=M13+7, avand de adaugat 6 elevi in primul caz si 2 elevi in cel de-al doi-lea. Am notat generic M6 si M13 multiplu de 6, respectiv multiplu de 13. Evident M6+M6=M6. Din pacate 6!=2.

Putem incerca: inmultim ambele ecuatii cu 3, cu 4, … pana avem acelasi numar de completare.

Pentru rezolvare ne salveaza programarea, traducand efectiv in javaScript: un ciclu for de la 750 la 820, aflarea de fiecare data a resturilor impartirii la 6, respectiv 13 cu operatorul %. O conditie if care selecteaza cand ambele (&& si) resturi sunt egale (==) ne conduce in milisecunde la rezultat. (764)

Forma originala a teoremei chinezesti a resturilor

O armata incolonata pe 3 randuri raman 2 soldati, pe 5 randuri raman 3, pe 7 randuri raman 2 soldati. Cati soldati are armata chineza?

Armata de teracota

Programam in JavaScript, pe modelul anterior cu 3 impartiri cu rest si presupunem mai putin de 500 soldati. Primul rezultat este evident 23.

Problema soldatilor se reduce la

x\equiv 2{\pmod  {3}}\,
x\equiv 3{\pmod  {5}}\,
x\equiv 2{\pmod  {7}}\,

se obtine atunci

  • 3*5*7=105
  • n1=3
  • n2=5
  • n3=7
x=2\times 70+3\times 21+2\times 15=233

o solutie pentru x este atunci 233

toate solutiile sunt numere congruente 233 modulo 105, adica congruent 23 modulo 105.

Se observa notatia matematica folosita in teoria numerelor (congruent modulo) diferita de notatia JavaScript (% pentru rest)