Răspuns :
Sa simplificam ecuatia respectiva.Sa presupunem ca stim valoarea lui xAtunci ecuatia in cele doua variabile y si z va fi[tex]\frac{1}{y}+\frac{1}{z}=\frac{z}{yz}+\frac{y}{yz}=\frac{y+z}{yz}=\frac{a}{b}-\frac{1}{x}=\frac{ax-b}{bx}[/tex] Mai intai impartim denumitorul si numitorul din partea dreapta a egalitatii ca sa simplificam problema. Sa presupunem ca obtinem fractia in dreapta e/fAcum, sa notam cel mai mare divizor comun dintre y si z cu dcmmdc(y,z)=d. Atunci y=m*d si z=n*d, unde m si n sunt alti divizori despre care stim ca sunt primi intre ei, altfel ar fi inclusi in dcmmdc(m,n)=1Atunci fractia din dreapta devine[tex]\frac{y+z}{yz}=\frac{m*d+n*d}{m*d*n*d}=\frac{d(m+n)}{d*d*m*n}=\frac{m+n}{d*m*n}=\frac{e}{f}[/tex] unde e si f sunt prime intre eleAtunci il putem determina pe d
[tex]d=\frac{f(m+n)}{e*m*n}[/tex]
Pentru ca variabila e nu este divizor al lui f, si m*n nu este divizor al lui m+n, inseamna ca m si n sunt divizori ai lui f.
Luam la rand toti divizorii lui f si il determinam in fiecare caz pe d
Daca d este un numar intreg, atunci inseamna ca si y=d*m si z=d*n sunt numere intregi si gasim tripleta
Pentru x, incepem cu x=2, si apoi il tot crestem pana la 100.
Acesta e codul in C
#include <iostream>
#include <cmath>
using namespace std;
int verifica(int x,int y,int z){
return(x<=y&&y<=z);
}
int cmmdc(int a,int b){
int temp;
while(b>0){
temp=b;
b=a%b;
a=temp;
}
return a;
}
int main(){
int a,b,x,m,n,denumitor,numitor,numitor_divizor_comun,sol=0;
float d;
cout<<"Introduceti cele doua numere:";
cin>>a>>b;
x=2;
while(x<100){
denumitor=a*x-b;
numitor=b*x;
numitor_divizor_comun=cmmdc(denumitor,numitor);
denumitor=denumitor/numitor_divizor_comun;
numitor=numitor/numitor_divizor_comun;
for(m=1;m<=numitor;m++){
for(n=numitor;n>=1;n--){
if(numitor%n==0&&numitor%m==0&&m*n<=numitor){
d=(float)((m+n)*numitor)/(m*n*denumitor);
if(d-(int)d==0&&verifica(x,d*m,d*n)==1){
sol=1;
cout<<x<<" "<<d*m<<" "<<" "<<d*n<<endl;
}
}
}
}
x++;
}
if(sol==0){
cout<<"NU SUNT SOLUTII";
}
return 0;
}
[tex]d=\frac{f(m+n)}{e*m*n}[/tex]
Pentru ca variabila e nu este divizor al lui f, si m*n nu este divizor al lui m+n, inseamna ca m si n sunt divizori ai lui f.
Luam la rand toti divizorii lui f si il determinam in fiecare caz pe d
Daca d este un numar intreg, atunci inseamna ca si y=d*m si z=d*n sunt numere intregi si gasim tripleta
Pentru x, incepem cu x=2, si apoi il tot crestem pana la 100.
Acesta e codul in C
#include <iostream>
#include <cmath>
using namespace std;
int verifica(int x,int y,int z){
return(x<=y&&y<=z);
}
int cmmdc(int a,int b){
int temp;
while(b>0){
temp=b;
b=a%b;
a=temp;
}
return a;
}
int main(){
int a,b,x,m,n,denumitor,numitor,numitor_divizor_comun,sol=0;
float d;
cout<<"Introduceti cele doua numere:";
cin>>a>>b;
x=2;
while(x<100){
denumitor=a*x-b;
numitor=b*x;
numitor_divizor_comun=cmmdc(denumitor,numitor);
denumitor=denumitor/numitor_divizor_comun;
numitor=numitor/numitor_divizor_comun;
for(m=1;m<=numitor;m++){
for(n=numitor;n>=1;n--){
if(numitor%n==0&&numitor%m==0&&m*n<=numitor){
d=(float)((m+n)*numitor)/(m*n*denumitor);
if(d-(int)d==0&&verifica(x,d*m,d*n)==1){
sol=1;
cout<<x<<" "<<d*m<<" "<<" "<<d*n<<endl;
}
}
}
}
x++;
}
if(sol==0){
cout<<"NU SUNT SOLUTII";
}
return 0;
}
Vă mulțumim că ați vizitat platforma noastră dedicată Informatică. Sperăm că informațiile oferite v-au fost utile. Dacă aveți întrebări sau aveți nevoie de asistență suplimentară, nu ezitați să ne contactați. Așteptăm cu nerăbdare să vă revedem și nu uitați să ne salvați în lista de favorite!