# PBinfo #4522 – primX – Rezolvare C++

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

## Enunț

Cerința
Dându-se numerele naturale n, x și un șir de n numere naturale, să se determine numărul prim cel mai apropiat de x. Dacă există mai multe soluții, aflați-l pe cel mai mic dintre numere.

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

Date de ieșire
Programul va afișa pe ecran numărul prim a, cel mai apropiat de x.

Restricții și precizări

2 ≤ n ≤ 100
1 ≤ x < 1.000.000.000
Cele n numere din șir vor fi mai mari decât 1 și mai mici decât 1.000.000.999
În șir va exista cel puțin un număr prim

Exemplu:
Intrare

5 21
5 39 19 97 23
Ieșire

19
Explicație
În șirul dat numere prime sunt 5, 19, 97 și 23. Sunt două numere egal apropiate de 21, acestea fiind 19 și 23. Cel mai mic este 19.

## Cod sursă C++

```cpp
#include <bits/stdc++.h>
using namespace std;
int main()
{
    int ePrim, j, i, n, y, x, valPrim = 2000000000;
    cin >> n >> x;
    for (j = 1; j <= n; j++)
    {
        cin >> y;
        // verifica daca y este prim
        ePrim = 1;
        for (i = 2; i * i <= y; i++)
            if (y % i == 0) ePrim = 0;
        if (ePrim == 1)
        {
            if (abs(valPrim - x) > abs(y - x))
                valPrim = y;
            else if (abs(valPrim - x) == abs(y - x) && valPrim > y)
                valPrim = y;
        }
    }
    cout << valPrim;
    return 0;
}
```

## Resurse

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