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