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;
}
for(i=0;i<=b;i=i+2)
if(b%i==0)
nr++;
Răspunsuri la întrebare
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!!
1. vezi cum afli dacă numerele sunt prime între ele...