Dându-se un număr natural a, să se verifice dacă a și inversul (oglinditul) lui a sunt ambele numere prime.
Primesc 91 de pcte ,asa vad eu solutia dar e gresita ptr cateva nr ,ex .14,16.Poate cineva s ama ajute sa inteleg unde gresesc?
#include
using namespace std;
int main() {
int X, nr_invers=0, ramas;
cin>>X;
int CX = X;//facem o copie a lui X
while(X != 0){
ramas = X%10;
nr_invers = nr_invers*10 + ramas;
X/=10;
}
int i = 2, este_prim = 1, este_prim2 = 1;
while(i< X){
if(X % i == 0){
este_prim = 0;
}
++i;
}
while(i< nr_invers){
if(nr_invers % i == 0){
este_prim2 = 0;
}
++i;
}
if(CX == 1){
este_prim = 0;
}
if(nr_invers == 1){
este_prim2 = 0;
}
if(este_prim ==1 && este_prim2 == 1){
cout<<"DA";
} else {
cout<<"NU";
}
return 0;
}
Răspunsuri la întrebare
Răspuns de
0
Răspuns:
#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;
}
lautarusclaudiu:
Multumes f mult dat trebuie sa o rezol doar cu if ,else,while.Nu pot folosi" for "
Alte întrebări interesante
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Chimie,
8 ani în urmă
Chimie,
8 ani în urmă
Engleza,
9 ani în urmă
Matematică,
9 ani în urmă