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

Hey, ce am gresit? Imi da doar 90 puncte
Dându-se un număr natural a, să se verifice dacă a și inversul (oglinditul) lui a sunt ambele numere prime.

#include

using namespace std;

int main()
{
int a, inversul=0;
cin>>a;
while(a!=0)
{
inversul=inversul*10+a%10;
a/=10;
}
int i = 2, m=2, este_prim = 1, este_prim1 = 1 ;
while (i < a || m < inversul) {
if (a % i == 0 && inversul % m == 0)
este_prim = 0, este_prim1 = 0 ;
++i, ++m;
}
if (a == 1 || inversul == 1)
este_prim = 0, este_prim1 = 0;
if (este_prim == 1 && este_prim1 == 1)
cout<<"DA";
else
cout<<"NU";
return 0;

}


pmarian98: cum se numeste problema
boiustef: e de pe wellcode.ro
boiustef: cand iesi din primul while (a!=0), a este zero.... tr sa folosescti o copie a lui ca sa nu-i pierzi valoarea
cargonta1108: oricum nu iau 100 puncte
cargonta1108: sorry ,,i-au"
boiustef: daca vrei sa discutam despre codul tau trecem la inbox...
boiustef: da, copia nu rezolva problema... sunt necesare modificari

Răspunsuri la întrebare

Răspuns de boiustef
0

#include <iostream>

using namespace std;

int main()

{

   int a,inv,c,d1=0,d2=0;

   cin>>a;

   for (int i=1;i<=a ;++i){   // aici numaram in d1 nr de divizori a  numaruluui a

       if (a%i==0) ++d1;

   }

   if (d1==2){       // daca nr de divizori este 2, nr dat este prim

       inv=0;          // aici creem inversul nr dat a

       while (a!=0) {

          c=a%10;

          inv=inv*10+c;

          a=a/10;

   }

       for (int i=1;i<=inv ;++i){  // aici in d2 numaram cati divizori are inv

       if (inv%i==0) ++d2;

       }

       if(d2==2) cout<<"DA";   // daca si d2 = 2 at ambele sunt prime

       else cout<<"NU";        // altfel nu

   } else cout<<"NU";          // aici e cazul cand d1!=2 , adica nr dat nu e prim

   return 0;

}



boiustef: nu am folosit cea mai afectiva metoda de determinare a primalitatii ....
cargonta1108: Varianta mea era corecta, doar ca ceva am scapat, problema e ca nu stiu ce. A ta functioneaza dar e prea complicata de aceea nu o pot trimite
pmarian98: ok
pmarian98: am incercat
cargonta1108: si?
boiustef: ???? de ce nu o poti trimite? eu pe ea am trimis-o si am primit pozitiv, doar ii scoti comentariile
Alte întrebări interesante