# PBinfo #303 – eratostene – Rezolvare C++

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

## Enunț

Cerinţa
Se dau n numere naturale mai mici decât 1.000.000. Determinaţi câte dintre ele sunt prime.

Date de intrare
Fişierul de intrare eratostene.in conţine pe prima linie numărul n; urmează cele n numere, dispuse pe mai multe linii şi separate prin spaţii.

Date de ieşire
Fişierul de ieşire eratostene.out va conţine pe prima linie numărul C, reprezentând numărul valorilor citite care erau numere prime.

Restricţii şi precizări

1 ≤ n ≤ 1.000.000

Exemplu:
eratostene.in

6
12 18 19 25 29 7
eratostene.out

3

## Cod sursă C++

```cpp
#include <fstream>
using namespace std;
ifstream in("eratostene.in");
ofstream out("eratostene.out");
int n, v[1000001];
int main() {
    v[0] = v[1] = 1;
    for (int i = 2; i * i < 1000001; ++i)
        if (v[i] == 0)
            for (int j = 2; i * j < 1000001; ++j)
                v[i * j] = 1;
    in >> n;
    int x, C = 0;
    for (int i = 1; i <= n; ++i) {
        in >> x;
        if (v[x] == 0) C++;
    } out << C;
    return 0;
}
```

## Resurse

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