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.
Restricții și precizări
1 ≤ a ≤ 2000000000
a nu are ultima cifră 0
Am incercat vreo 3 programe... nu inteleg de ce site-ul nu le accepta, in code blocks merge. Poate reusiti sa imi explicati.
Răspunsuri la întrebare
#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 cream 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;
}
using namespace std;
int main() {
int a,d,e,ogl,ok,okk,c;
ok=0;
okk=0;
cin>>a;
ogl=0;
d=2;
e=2;
while(a % d !=0 && d<=a/2) {
d++;
}
if(a % d !=0) {
ok=1;
}
while(a>0){
c=a%10;
a=a/10;
ogl=ogl * 10 +c ;
}
while(ogl % e!=0 && e<=ogl/2){
e++;
}
if(ogl % e !=0){
okk=1;
}
if (ok==1 && okk==1)
cout<<"da";
else
cout<<"nu";
return 0 ;
}