Informatică, întrebare adresată de TipaAia, 8 ani în urmă

Deci am incercat sa modific rezolvarea asta in orice fel si pur si simplu nu imi da ce trebuie si nu inteleg ce e gresit la ea. Ma poate ajuta cineva?


Se dau două numere naturale a și b. Dacă cele două numere sunt prime între ele (adică au cel mai mare divizor comun egal cu 1), atunci să se calculeze suma cifrelor celor două numere, altfel să se determine câți divizori pari are numărul cel mai mare


#include

using namespace std;

int main()
{
int a,b,c,S1=0,S2=0,S,i,nr=0;
cout << "a=";cin>>a;
cout << "b=";cin>>b;
while(a!=b)
if(a>b)
a=a-b;
else
if(b>a)
b=b-a;
while (a=1)
{while(a>0)
S1=S1+a%10;
a=a/10;
while(b>0)
S2=S2+b%10;
b=b/10;
S= S1+S2;
cout<<"Suma cifrelor celor doua numere este "< b)
{for(i=0;i<=a;i=i+2)
if(a%i==0)
nr++;
cout<<"Numarul mare are "< a)
for(i=0;i<=b;i=i+2)
if(b%i==0)
nr++;
cout<<"Numarul mare are "< return 0;
}


boiustef: un sfat... problema e complexă și e bine s-o divizezi pe părți..
1. vezi cum afli dacă numerele sunt prime între ele...
boiustef: dacă e bine, atunci faci următorii pași...
boiustef: aici nu e eroare???
for(i=0;i<=b;i=i+2)
if(b%i==0)
nr++;
boiustef: i nu poate porni de la 0 ... împărțirea la 0 nu are loc....
boiustef: toți trec prin astea... important să ne învățăm din greșelile noastre și a altora... :))) Succese!

Răspunsuri la întrebare

Răspuns de boiustef
1

Răspuns:

#include <iostream>

using namespace std;

int main()

{

   int a,b,m,n;

   cin >> a >> b;

   m=a; n=b;

   while (m!=n) {

       if (m>n) m=m-n;

       else n=n-m;

   }

   if (m==1) {

       int s=0;

       m=a; n=b;

       while (m) {

           s+=m%10; m/=10;

       }

       while (n) {

           s+=n%10; n/=10;

       }

       cout << " suma cifrelor celor doua numere este " << s;

   }

   else {

       int max=a;

       if (b>max) max=b;

       int dp;

       if (max%2==1) dp=0;

       else {

           dp=1;

           for (n=2; n<=max/2; n+=2) {

               if (max%n==0) ++dp;

           }

       }

       cout << "maximul " << max << " are " << dp << " divizori pari";

   }

   return 0;

}

Explicație:

succese!!


TipaAia: multumesc mult <3
boiustef: cpl
Alte întrebări interesante