👤

Salutare!Ma puteti ajuta la aceasta problema?Vreau sa specifil ca doresc rezolvarea problemei doar folosind if si while !
Dându-se un număr natural a, să se verifice dacă a și inversul (oglinditul) lui a sunt ambele numere prime.

Date de intrare
Se citește de la tastatură numărul natural a.

Date de ieșire
Să se afișeze DA dacă numărul a și inversul său sunt ambele prime sau NU, în caz contrar.

Eu am rezolvat asa dar nu inteleg ce am gresit!
#include
using namespace std;

int main() {
int a, nr_invers = 0, ramas;
cin >> a;
int Ca = a;
while (a != 0) {
ramas = a % 10;
nr_invers = nr_invers * 10 + ramas;
a /= 10;
}
int i = 2, este_prim = 1, este_prim2 = 1;
while (i < a) {
if (a % i == 0) {
este_prim = 0;
}
++i;
}
while (i < nr_invers) {
if (nr_invers % i == 0) {
este_prim2 = 0;
}
++i;
}
if (Ca == 1) {
este_prim = 0;
}
if (nr_invers == 1) {
este_prim2 = 0;
}

if (este_prim == 1 && este_prim2 == 1) {
cout << "DA";
}
else {
cout << "NU";
}
return 0;
}


Răspuns :

Răspuns:

#include <iostream>>

using namespace std;

int main()

{

   int n,oglindit=0,c,p=10,i=2,ok1=1,ok2=1;

   cout<<"Citeste numarul: ";

   cin>>n;

   while(n!=0){

       c=n%10;

       n=n/10;

       oglindit=oglindit*p+c;

   }

   while(i<=n/2){

       if(n%i==0){

           ok1==0;

       }

       i++;

   }

i=2;

   while(i<=oglindit/2){

       if(n%i==0){

           ok2==0;

       }

       i++;

   }

   if(ok1==1 && ok2==1)

       cout<<"da";

   else

       cout<<"nu";

   return 0;

}

Explicație: