... axbycDaca a si b sunt numere prime intre ele si x0, y0 constituie o solutie pentru axbyc, atunci totalitatea solutiilor se poate reprezenta sub forma x x0bt, y y0 -at, unde t este un numar intreg oarecare. O solutie a ecuatiei se poate obtine cu ajutorul penultimei fractii de aproximare pentru reprezentarea sub forma de fractie continua a lui ab. Considerand ca penultima fractie este mn, x0nc, y0-mc.ExempluFie ecuatia 43x19y2.Fractiile de aproximare ale lui 4319 sunt 73, 94, 4319.Din fractia 94 se obtine x0428, y0-92-18. Astfel, solutia generala se poate scrie de forma x819t si y-18-43t, unde t este un numar oarecare.ImplementareAlgoritmul de mai sus este valabil, dupa cum am precizat, in cazul cand cele 2 numere a si b sunt prime intre ele. Daca dorim rezolvarea unei ecuatii in care cele 2 numere nu sunt neaparat prime intre ele, se poate proceda in felul urmator se calculeaza cel mai mare divizor comun al lor sigur este diferit de 1, iar apoi se evalueaza daca ecuatie poate sau nu avea solutii, in functie de valoarea lui c. Daca c este divizibil cu cmmdc-ul celor 2 numere, atunci se simplifica intreaga ecuatie cu cmmdc si problema se reduce la cea prezentata mai sus. Daca c nu se imparte exact la cmmdc, atunci putem spune ca ecuatia nu are solutii intregi.Pe langa aceasta, intervin o serie de cazuri critice in care algoritmul de mai sus nu poate fi aplicat, cum ar fi de exemplu cazurile in care nu exista penultima fractie. Dar se poate calcula solutia si in aceste cazuria0, b0In acest caz solutia depinde valoarea lui cc0 x si y poate fi orice numar intregc 0 nu exista solutiia0, b 0Ecuatia devine byc. Deci y se poate calcula, tinand insa cont ca vorbim numai de numere intregi.a0, b 0Analog cu cazul anterior.Daca unul dintre numerele a sau b are valoarea 1 nu se mai poate vorbi de penultima fractie de aproximare, deci si aceste cazuri trebuie tratate separat.O alta observatie este aceea ca fractia de aproximare mn aproximeaza fractia ab in plus sau in minus. De aceea in la sfarsit trebuie sa corectez rezultatul in functie de aceasta, tinand seama si de semnul fractiei ab.Sursa programuluiinclude stdio.hinclude conio.hinclude math.hlong int vi100sobtine penultima fractie de aproximarevoid getsmnlong int a,long int b,int kI if k0 I long int auxvik-1sba abbaux getsmna,b,k-1 S else aab-baSlong int scmmdclong int a,long int bI hile a!b if ab a-b else b-a return aSvoid stopI printfNu exista solutii...tnSint solutiilong int a,long int b,long int c, long int x0,long int n1,long int y0,long int n2I long int m,n,cmmdc1,sa,sb int nr-1 salabsasblabsb if sa1sb1 cmmdcscmmdcsa,sb if cmmdc!1I if ccmmdc Istopreturn 0S else acmmdc,bcmmdc,ccmmdc S manb if !ab if !a if !b I 0c if !c printfx,yIZtn else stop return 0 S else I byc if cb stop else I printfxIZtn printfyldtn,cb S return 0 S else I axc if ca stop else Iprintfxldtn,ca printfyIZtn S return 0 S if labsm1 I inseamna ca este de forma xbyc, deci nu exista penultima fractie de aproximare x0cmn1-bm y00n21 return 1 S else if labsn1 I inseamna ca este de forma axyc, deci nu exista penultima fractie de aproximare x00n11 y0cnn2-an return 1 S m si n sunt diferite de 1, si diferite intre ele mlabsmnlabsn hile m!1I if mnI vinrsmn m-mnn S else if mn mmn-nm S nvinrs getsmnm,n,nr if sasb mmn-nm in functie de fractia de aproximare corectez rezultatul if ab0 if sansbm c-c if ab0 if sansbm c-c if a0 m-m if b0 n-n x0ncn1b y0-mcn2-a return 1Svoid mainvoidI long int a,b,c,x0,y0,n1,n2 doI clrscr putsSe rezolva ecuatia axbyc, a,b,x,y,ciZ printfascanfld,afflushstdin printfbscanfld,bfflushstdin printfcscanfld,cfflushstdin printf----------------------------------------tn if solutiia,b,c,x0,n1,y0,n2I if !x0 if labsn1!1 printfxldttn,n1 else printf...
Download