👤

Să se scrie o funcție C++ care, pentru un număr natural n transmis ca parametru, determină și întoarce prin intermediul unor parametrii de ieșire cel mai mare număr prim mai mic decât n și cel mai mic număr prim mai mare 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, 3 ≤ n < 1.000.000.000
a și b sunt parametrii prin care funcția va întoarce cele două valori cerute, astfel:
a este cel mai mare număr prim mai mic decât n
b este cel mai mic număr prim mai mare decât n

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


Răspuns :

void sub(int n, int &a, int &b)
{
    int i;
    for (i=n; ; )
    {
        int c=0,s=sqrt(i);
        for (int j=2; j<=s; j++)
            if (i % j == 0) c++;
        if (c==0) break; else i++;
    }
    a=i;
    for (i=n; ; )
    {
        int c=0,s=sqrt(i);
        for (int j=2; j<=s; j++)
            if (i % j == 0) c++;
        if (c==0) break; else i--;
    }
    b=i;
}