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

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;
}


BucsaV: #include

using namespace std;

int main()
{
int a, ai, d = 2, x = 0;
cin >> a;

while(d <= a / 2){
if(a % d == 0)
x = 1;
d++;
}

while(a){
ai *= 10 + a%10;
a /= 10;
}

d = 2;

while(d <= ai / 2){
if(ai % d == 0)
x = 1;
d++;
}

if(x == 1)
cout << "DA";
else
cout << "NU";
return 0;
}
LupuLupino01: Nu functioneaza

Răspunsuri la întrebare

Răspuns de uatafacromania1
0

Răspuns:

#include <iostream>

using namespace std;

int main() {

   int a,copie,ninv=0,prim1=1,prim2=1,i=2;

cin >> a;

   while(copie!=0) {

       ninv*=10+copie%10;

   copie/=10;

   }

   while(i<=a/2) {

       if(a%i==0)

       prim1=0;

   i++;

   }

   while(i<=ninv/2) {

       if(ninv%i==0)

       prim2=0;

   i++;

   }

   if(prim1==1 && prim2==1)

       cout << "DA";

   else cout << "NU";

}

Succes!


LupuLupino01: Nu functioneaza,primesc doar 73%
Alte întrebări interesante