# PBinfo #2329 – prim007 – Rezolvare C++

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

## Enunț

Cerința
Se dă un șir a1, a2, …, an format din n numere naturale. Determinați numărul de perechi de elemente din șir (ai,aj) cu i < j, care au suma număr prim.

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 rezultatelor care sunt numere prime.

Restricții și precizări

2 ≤ n ≤ 100.000
elementele șirului vor fi mai mici decât 10.000

Exemplu:
Intrare

3
2 5 9
Ieșire

2
Explicație
Sumele obţinute sunt 2+5=7 , 2+9=11 , 5+9=14. Dintre rezultatele obţinute, două sunt prime, 7 şi 11.

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
long long n,i,j,k,p[21000],prim[3000],v[21000],x,nr,nr1;
int main()
{
    cin >> n ;
    p[1] = 1 ;
    p[2] = 0 ;
    for ( i=2 ; i<=20000 ; i++ )
        if ( p[i]==0 )
    {
        k++ ;
        prim[k] = i ;
        j = i+i ;
        while (j<=20000)
        {
            p[j] = 1 ;
            j = j+i ;
        }
    }
    for ( i=1 ; i<=n ; i++)
    {
        cin >> x ;
        v[x]++ ;
    }
    nr = 0 ;
    for ( i=2 ; i<=k ; i++ )
        for ( j=1 ; j<=prim[i] ; j=j+2 )
            nr = nr+v[j]*v[prim[i]-j] ;
    if (v[1]>1) nr = nr+v[1]*(v[1]-1)/2 ;
    nr = nr+v[0]*v[2] ;
    cout << nr ;
    return 0;
}
```

## Resurse

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