# PBinfo #29 – maxprime – Rezolvare C++

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

## Enunț

Cerinţa
Să se scrie o funcție C++ care, pentru un număr natural n transmis ca parametru, determină și întoarce prin intermediul unor parametri de ieșire cele mai mari două numere naturale prime mai mici decât n.

Restricţii şi precizări

numele funcției va fi sub
funcția va avea exact trei parametri, în această ordine:
	
primul parametru, n, reprezintă un număr natural, 5 ≤ n < 1000000000
a și b sunt parametrii prin care funcția va întoarce cele două valori căutate

parametrii a și b respectă relația a>b

Exemplu
Dacă n=28, apelul subprogramului va furniza prin parametrul a valoarea 23, iar prin b valoarea 19.

Important
Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.

## Cod sursă C++

```cpp
bool prim(int n) {
    int d = 2, temp = 1;
    while (n > 1){
        int p = 0;
        while (n % d == 0) {
            n = n / d;
            p++;
        } temp = temp * (p + 1);
        d++;
        if (d * d > n)
            d = n;
    } return temp == 2;
}
void sub(int n, int& a, int& b) {
    a = -1, b = -1;
    n--;
    while (!prim(n))
        n--;
    a = n;
    n--;
    while (!prim(n))
        n--;
    b = n;
}
```

## Resurse

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