👤

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 :

bool prim(int n) {
  int d = 2;
  while (d * d <= n && n % d != 0)
    d++;
  return (d * d > n && n > 1);
}
int i_prim (int n) {
  int d = n;
  while(!prim(d))
    d--;
  int d2 = n;
  while(!prim(d2))
    d2++;
  return d2 - d;
}