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 pentru vizita pe site-ul nostru dedicat Informatică. Ne dorim ca informațiile furnizate să vă fi fost utile. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, nu ezitați să ne contactați. Revenirea dumneavoastră ne bucură, iar pentru acces rapid, adăugați-ne la favorite!