# PBinfo #4517 – treiDiv – Rezolvare C++

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

## Enunț

Cerința
Se dau n numere naturale. Să se determine câte dintre ele au exact trei divizori.

Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații.

Date de ieșire
Programul va afișa pe ecran numărul nr, reprezentând numărul de numere care au exact trei divizori.

Restricții și precizări

2 ≤ n ≤ 10
cele n numere citite vor fi mai mici decât 1012

Exemplu:
Intrare

5
15 9 44 121 100
Ieșire

2
Explicație
Cele două numere care au exact trei divizori sunt 9 și 121.

## Cod sursă C++

```cpp
#include <bits/stdc++.h>
using namespace std;
int main()
{
    int ePrim, j, n, cnt = 0;
    long long x, i;
    cin >> n;
    for (j = 1; j <= n; j++)
    {
        cin >> x;
        i = sqrt(x);
        if (i * i == x)
        {
            x = i;
            /// verific daca x e prim
            ePrim = 1;
            if (x < 2) ePrim = 0;
            else if (x == 2) ePrim = 1;
            else if (x % 2 == 0) ePrim = 0;
            else
            {
                for (i = 3; i * i <= x; i += 2)
                    if (x % i == 0) ePrim = 0;
            }
            if (ePrim == 1) cnt++;
        }
    }
    cout << cnt;
    return 0;
}
```

## Resurse

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