Informatică, întrebare adresată de dragosp, 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.#include
NU inteleg ce am gresit ,primesc doar 89/100 .
using namespace std;

int main() {
int a,b,i=2,j=2,ok=1,ko=1,r=0;
cin>>a;
b=a;
while(b!=0)
{r=b%10+r*10;
b=b/10;}
while(i {i++;
if(a%i==0)
{ok=0;}
}
if (a==1)
{ok=0;
}
while(j {
j++;
if(r%j==0)
{ko=0;}
}
if (r==1)
{ko=0;
}
if (ok==1 && ko==1)
cout<<"DA";
else
cout<<"NU";
}

Răspunsuri la întrebare

Răspuns de Kurapiika
7

Nu e buna conditia la al doilea while. Cat timp i exista..pai i-ul nu stie pana unde sa mearga si programul unde sa se opreasca. i-ul intr-adevar, incepe de la 2, dar, la inceputul lui while, ai pus i++ asa ca se va face 3 din start, si nu-i bun. La if ai scris bine. In caz ca a%i==0, ok=0. Apropo, cand ai o singura instructiune, nu e nevoie sa o pui in acolade. Dupa al doilea while, ai pus if(a==1) ok=0; Aici nu prea am inteles ce ai vrut sa faci. a-ul este numarul pe care l-ai citit sus. Daca a, sa zicem, e 13, nu va fi egal cu 1. Urmatorul while e la fel ca primul, ceea ce inseamna ca are aceleasi probleme.

Am facut si eu problema. Ai poza mai jos. Iti recomand sa mergi cu for. Primul for verifica daca n este prim, iar daca este, face inversul. Dupa ce termina, verifica daca si el este prim. Iar daca este, va afisa da, altfel nu.

Apropo: la for, i-ul merge de la 2 pana la n/2, respectiv inv/2;

Daca nu ti-a iesit din prima, nu te descuraja. Incearca sa copiezi in c++ cum am facut si sa intelegi mersul. Bafta :D

Anexe:

dragosp: multumesc mult pentru indicatii!
Kurapiika: Cu placere ^-^
Răspuns de S0unds
5

Ai explicatia in imagini si codul in fisierul text.

Anexe:
Alte întrebări interesante