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.
bool prim(int n){ int d = 2, cnt = 1; while(n > 1){ int p = 0; while(n % d == 0) n/=d, p++; cnt *= (p + 1); d++; if(d * d > n) d = n; } return cnt == 2; } int i_prim(int n){ int p1 = n, p2 = n; while(!prim(p1)) p1--; while(!prim(p2)) p2++; return p2 - p1; }