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

#3081 TruncatableLeft , pbinfo
Un număr prim se numește trunchiabil-stânga dacă, prin eliminare repetată a primei cifre, toate numerele rezultate sunt prime.
Se dă un număr natural, să se verifice dacă numărul este prim trunchiabil-stânga.

Date de intrare
Programul citește un număr natural nenul n.

Date de ieșire
Programul va afișa DA dacă n este prim trunchiabil-stânga, altfel va afișa NU.

Restricții și precizări
n este mai mic decât 1.000.000.
Cel mai mare prim trunchiabil-stânga este 357686312646216567629137.
Exemplu 1:
Intrare

1223
Ieșire

DA
Exemplu 2:
Intrare

263
Ieșire

NU
Explicație
Exemplu 1: 1223 e prim. Eliminăm 1, 223 e prim. Eliminăm 2, 23 e prim. Eliminăm 2, 3 e prim.
Deci, numărul 1223 e prim trunchiabil-stânga.
Exemplu 2: 263 e prim. Eliminăm 2, dar 63 nu e prim.
Deci, 263 nu e prim trunchiabil-stânga.

Răspunsuri la întrebare

Răspuns de xBobo
2

Răspuns:

#include <iostream>

#include <cmath>

using namespace std;

int main()

{

   int n, cn, x, a;

   int cif = 0, p = 10;

   bool nrprim = true;

   cin >> n;

   cn = n;

   while (cn > 9)

   {

       cif++;

       cn /= 10;

   }

   while (cif > 0)

   {

       a = pow(p, cif);

       x = n % a;

       if ((x < 2) || (x % 2 == 0 && x > 2))

       {

           nrprim = false;

       }

       else

       {

           for (int d = 2; d * d <= x; d++)

           {

               if (x % d == 0)

               {

                   nrprim = false;

               }

           }

       }

       cif--;

   }

   if (nrprim)

   {

       cout << "DA";

   }

   else

   {

       cout << "NU";

   }

   return 0;

}

Explicație:

Solutie mea de 100 de puncte, intreaba-ma daca n-ai inteles ceva.


StefaniaIrina1: Ai construit un numar ca sa poti verifica proprietatea din enunt?
StefaniaIrina1: si ai verificat daca e prim luan din el cifra din fata
xBobo: Am citit numarul de la tastatura si dupa l am bagat intr un while ca sa ii numar cifrele si dupa in al doilea while ii taiam constant prima cifra si verificam daca este numar prim
StefaniaIrina1: Multumesc, am inteles foarte bine acum
Alte întrebări interesante