#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:
#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.