Informatică, întrebare adresată de alexmogoseanu123, 8 ani în urmă


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 pmarian98
0

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;

}


Răspuns de Dilau420
0

#include <iostream>

bool prim(int n)

{

if (n < 2) return false;

if (n == 2) return true;

if (n % 2 == 0)

 return false;

for (int d = 3; d * d <= n; d += 2)

 if (n % d == 0)

  return false;

return true;

}

int i_prim(int n){

   int p1 = n;

   int p2 = n;

   while(!prim(p1))

       p1 --;

   p2 = n;

   while(!prim(p2))

       p2++;

       return p2 - p1;

}


Alte întrebări interesante