Cerinţa
Scrieţi definiția completă a unui subprogram C++ i_prim care primește prin singurul său parametru, n, un număr natural cu cel mult 9 cifre și returnează diferența minimă p2-p1 în care p1 şi p2 sunt numere prime și p1≤n≤p2.

Restricţii şi precizări
numele subprogramului va fi i_prim
n>2

Exemplu
Dacă n=28, i_prim(n)=6, deoarece p1=23 și p2=29.

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.


Răspuns :

Nu-i complet :) (merge pe cateva cazuri (sau poate nu), te las pe tine sa completezi)

int i_prim(int val)
{
    int p1, p2, ok;
    p1 = p2 = val;

    for(;;)
    {
        ok = 0;
        for(int d=2; d*d<=p2; d++)
            if(!(p2 % d)) { ok = 1; break; }
        if(!ok) break;
        p2++;
    }

    for(;;)
    {
        ok = 0;
        for(int d=2; d*d<=p1; d++)
            if(!(p1 % d)) { ok = 1; break; }
        if(!ok) break;
        p1--;
    }

    return p2 - p1;
}

Vă mulțumim pentru vizita pe platforma noastră dedicată Informatică. Sperăm că informațiile prezentate v-au fost utile. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, nu ezitați să ne contactați. Așteptăm cu entuziasm să reveniți și vă invităm să ne adăugați la lista de favorite!


Viz Lesson: Alte intrebari