Informatică, întrebare adresată de Ouroboros, 9 ani în urmă

C++

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ăspunsuri la întrebare

Răspuns de express
16
int i_prim(int n)
{
    int i, r=0, n1, n2;
    bool prim = true;
    for(i = 2; i*i <= n; i++)
     if(n % i == 0)
     {
         prim = false;
         break;
     }
   if (!prim)
        {
           n2=n;
           n1=n;
           while(true)
          {
              n1++;
              prim = true;
              for(i = 2; i*i <= n1; i++)
               if(n1 % i == 0)
                {
                  prim = false;
                  break;
                }
              if (prim) break;
          }
          while(true)
          {
              n2--;
              prim = true;
              for(i = 2; i*i <= n2; i++)
               if(n2 % i == 0)
                {
                  prim = false;
                  break;
                }
              if (prim) break;
          }
         r = n1 - n2;

        }
        return r;
}

Alte întrebări interesante