Salutare!Ma puteti ajuta la aceasta problema?Vreau sa specifil ca doresc rezolvarea problemei doar folosind if si while !
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.
Eu am rezolvat asa dar nu inteleg ce am gresit!
#include
using namespace std;
int main() {
int a, nr_invers = 0, ramas;
cin >> a;
int Ca = a;
while (a != 0) {
ramas = a % 10;
nr_invers = nr_invers * 10 + ramas;
a /= 10;
}
int i = 2, este_prim = 1, este_prim2 = 1;
while (i < a) {
if (a % i == 0) {
este_prim = 0;
}
++i;
}
while (i < nr_invers) {
if (nr_invers % i == 0) {
este_prim2 = 0;
}
++i;
}
if (Ca == 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,copie,ninv=0,prim1=1,prim2=1,i=2;
cin >> a;
while(copie!=0) {
ninv*=10+copie%10;
copie/=10;
}
while(i<=a/2) {
if(a%i==0)
prim1=0;
i++;
}
while(i<=ninv/2) {
if(ninv%i==0)
prim2=0;
i++;
}
if(prim1==1 && prim2==1)
cout << "DA";
else cout << "NU";
}
Succes!
Alte întrebări interesante
Limba română,
8 ani în urmă
Limba română,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
using namespace std;
int main()
{
int a, ai, d = 2, x = 0;
cin >> a;
while(d <= a / 2){
if(a % d == 0)
x = 1;
d++;
}
while(a){
ai *= 10 + a%10;
a /= 10;
}
d = 2;
while(d <= ai / 2){
if(ai % d == 0)
x = 1;
d++;
}
if(x == 1)
cout << "DA";
else
cout << "NU";
return 0;
}