# PBinfo #1931 – fantastice – Rezolvare C++

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

## Enunț

Cerința
Definim un număr ca fiind fantastic dacă numărul de numere la care acesta se împarte exact este un număr prim.

Dându-se un șir cu n numere întregi strict pozitive, să se afișeze numărul de numere fantastice din șir.

Date de intrare
Fișierul de intrare fantastice.in conține pe prima linie numărul n de numere, iar pe cea de-a doua linie, separate prin câte un spaţiu, cele n numere.

Date de ieșire
Fișierul de ieșire fantastice.out va conține pe prima linie numărul de numere fantastice din șir.

Restricții și precizări

1 ≤ n ≤ 1.000.000
numerele de pe a doua linie a fișierului de intrare vor fi mai mici sau egale cu 1.000.000

Exemplu:
fantastice.in

6
21 19 25 16 27 729
fantastice.out

4
Explicație
21 are divizorii 1, 3, 7, 21
19 are divizorii 1, 19
25 are divizorii 1, 5, 25
16 are divizorii 1, 2, 4, 8, 16
27 are divizorii 1, 3, 9, 27
729 are divizorii 1, 3, 9, 27, 81, 243, 729

Deci sunt 4 numere fantastice: 19 25 16 729

## Cod sursă C++

```cpp
#include <bits/stdc++.h>
using namespace std;
ifstream in("fantastice.in");
ofstream out("fantastice.out");
int prim(int n) {
    if (n == 0 || n == 1) return 0;
    if (n == 2) return 1;
    if (n % 2 == 0) return 0;
    else for(int d = 3; d * d <= n; d = d + 2) 
        if (n % d == 0) 
            return 0;
    return 1;
} int nrdiv(int n) {
    int rez = 0;
    for (int i = 1; i * i <= n; i++) {
        if (n % i == 0) rez = rez + 2;
        if (i * i == n) rez--;
    } if (prim(rez)) return 1;
    else return 0;
} int main() {
    int n, var, temp = 0;
    in >> n;
    for (int i = 0; i < n; i++) {
        in >> var;
        if (nrdiv(var)) temp++;
    } out << temp;
    return 0;
}
```

## Resurse

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