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.
Am incercat codul acesta, dar imi spune doar daca oglinditul lui(ex: 142 => 241) este numar prim, astfel ca nu verifica daca si numarul "a" este prim
#include
using namespace std;
int main()
{
int inv=0;
int a;
int i = 2;
int prim1 = 1;
int prim2 = 1;
cin>>a;
while(a!=0){
inv = inv * 10+a%10;
a=a/10;
}
while(i < a){
if(a % i == 0){
prim1 = 0;
}
++i;
}
while(i < inv){
if(inv % i == 0){
prim2 = 0;
}
++i;
}
if(a == 1)
prim1 = 0;
if(inv == 1)
prim2 = 0;
if(prim1 == 1 && prim2 == 1)
cout<<"DA";
else
cout<<"NU";
return 0;
}
carat033:
Vrei sa fac alt program sau sa-l corectez pe al tau? x-x
Răspunsuri la întrebare
Răspuns de
1
Deci, in primul rand, mai bine iti fac o alta varianta mai mica si mai eficienta.
Dupa al doilea while, trebuie sa setezi i-ul iar la valoarea 2.
daca tu l-ai impartit pe a in primul while la 10 pana a devenit 0, acum trebuie sa-i dai lui a valoarea de la inceput, de-aia nu iti ia decat inversul, pentru ca a-ul tau este 0. Ca sa faci sa functioneze algoritmul, trebuie sa scoti cei 2 if (if (a==1) si if(inv==1) pentru ca tu deja ii atribui lui prim1 valoarea 0 daca a%i==0 si lui prim2 valoarea 0 daca inv%i==0. Sper sa intelegi, daca nu, iti scriu un algoritm.
Alte întrebări interesante
Fizică,
8 ani în urmă
Limba română,
8 ani în urmă
Chimie,
8 ani în urmă
Limba română,
8 ani în urmă
Engleza,
8 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă