# PBinfo #258 – detPrim – Rezolvare C++

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

## Enunț

Cerinţa
Se dau două numere naturale a şi b, a≤b. Să se determine, dacă există, un număr prim x care aparţine intervalului închis [a,b] pentru care valoarea expresiei |b+a-2*x| este minimă, unde |m| este valoarea absolută a numărului întreg m. Dacă nu există nici un astfel de număr, se va afişa mesajul NU EXISTA, iar dacă există mai multe se va afişa cel mai mic.

Date de intrare
Programul citește de la tastatură numerele a şi b.

Date de ieşire
Programul afișează pe ecran numărul x determinat, sau mesajul NU EXISTA.

Restricţii şi precizări

1 ≤ a ≤ b ≤ 1.000.000.000

Exemplu:
Date de intrare

7 18
Date de ieșire

13

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
int prim(int n) {
    if (n < 2) return 0;
    if (n == 2) return 1;
    if (n % 2 == 0) return 0;
    for (int d = 3; d * d <= n; d = d + 2)
        if (n % d == 0)
        	return 0;
	return 1;
}
int main() {
    int a, b, nr = 0, minim = 10000000; cin >> a >> b;
    for (int i = a; i <= b; ++i) {
        if (prim(i))
            if (abs(b + a - 2 * i) < minim) {
                minim = abs(b + a - 2 * i);
            	nr = i;
            }
    } if (nr) cout << nr;
    else cout << "NU EXISTA";
	return 0;
}
```

## Resurse

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