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

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 ≤ 300000
a nu are ultima cifră 0

Problema e de pe wellcode si asta e rezolvarea mea:

#include
using namespace std;

int main() {
int a;
cin>>a;
int ca=0;

while (a>0) {
ca=ca*10;
ca=ca+a%10;
a=a/10;
}
int i=2, numar_prim=1, numar_prim2=1;
while (i if(ca%i==0) {
numar_prim2=0;
}
++i;
}

if(ca==1)
numar_prim2=0;
i=2;
while (i if (a%i==0) {
numar_prim=0;
}
++i;
}
if (a==1)
numar_prim=0;
if(numar_prim==1 && numar_prim2==1)
cout<<"DA";
else
cout<<"NU";

return 0;
}
Imi puteti spune unde am gresit?


CinevaFaraNume: Lipseste o parte din conditie aici: "while (i if (a%i==0) {"
vladvlad: Nu lipsea, am copiat eu gresit :), while(i
vladvlad: >a)

Răspunsuri la întrebare

Răspuns de GustavoPop
1

Răspuns:#include <iostream>

using namespace std;

int main() {

int a,ca=0,og=0,se=0;

cin>>a;

ca=a;

while (a!=0){

 og=og*10+a%10;

 a=a/10;

}

a=ca;

for(int i=2;i<a;i++){

 if(a%i==0 || og%i==0) {

  se++;

  break;

 }

}

if(se==0) cout<<"DA";

else if(se!=0) cout<<"NU";

return 0;

}

Explicație: a este numarul

ca este copia

og este oglinditul

se inseamna ca se imparte la un numar (i) = nu este prim

am folosit break , sper ca intelegi de ce.

Alte întrebări interesante