416
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;
}
Comentarii