# PBinfo #1669 – palindrom prim norocoase – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: andrei

## Enunț

Cerința
Se dau n numere naturale. Aflaţi câte dintre ele sunt palindrom prim norocoase. Un număr este palindrom prim norocos dacă este palindrom (egal cu răsturnatul său, de exemplu 121), prim (are exact 2 divizori, de exemplu 3) şi norocos (pătratul numărului se poate scrie ca sumă de numere consecutive, exemplu 3. 3 * 3 = 9 = 2 + 3 + 4).

Date de intrare
Se va citi de la tastatura numărul n si n numere naturale separate prin spații.

Date de ieșire
Se va afisa numarul de numere care respecta conditiile.

Restricții și precizări

1 ≤ n ≤ 1000
cele n numere vor fi mai mici decât 2.000.000.000.

Exemplu:
Intrare

6
2 3 5 7 11 24
Ieșire

4
Explicație
Sunt 6 numere, dintre care doar 4 respectă condițiile: 3, 5, 7 şi 11.

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
int prim(int n) {
    if (n < 2) return 0;
    if (n == 2) return 1;
    if (n % 2 == 0) return 0;
    for (int i = 3; i * i < n; i++)
        if (n % i == 0) return 0;
    return 1;
}
int oglindit(int n) {
    int ogl = 0;
    while (n) {
        ogl = ogl * 10 + n % 10;
        n = n / 10;
    } return ogl;
}
int palindrom(int n) {
    if (n == oglindit(n)) return 1;
    return 0;
}
int norocos(int n) {
    if (n % 2 == 1) return 1;
    return 0;
}
int main() {
    int n, temp, var = 0;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> temp;
        if (palindrom(temp) && norocos(temp) && prim(temp)) var++;
    } cout << var;
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/1669)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/1669/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-1669/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
