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

Scrieţi definiţia completă a unui subprogram i_prim care primeşte prin singurul său
parametru, n, un număr natural din intervalul [2,30000] şi returnează diferenţa minimă
p2-p1 în care p1 şi p2 sunt numere prime şi p1≤n≤p2.
Exemplu: dacă n=20 atunci i_prim(20)=4, valoare obţinută pentru p1=19 şi p2=23.
va rog in c++

Răspunsuri la întrebare

Răspuns de boiustef
2

#include <math.h>

int i_prim (int n)

{

     int d=1,i;

     for (i=2;i<=sqrt(n);++i){

       if (n%i==0) ++d;

     }

     if (d==1) return 0;

     else {

      int p1=1,m;

      m=n;

      if (n%2==0) --m;

      else  m-=2;

      while (p1==1){

       d=1;

       for (i=2;i<=sqrt(m);++i)

           if (m%i==0) ++d;

       if (d==1) p1=m;

       else m-=2;

      }

      if (n%2==0) m=n+1;

      else  m=n+2;

      int p2=1;

       while (p2==1){

       d=1;

       for (i=2;i<=sqrt(m);++i)

           if (m%i==0) ++d;

       if (d==1) p2=m;

       else m+=2;

      }

      return p2-p1;

     }

}


aandronicescuowwgch: pupici <3
Alte întrebări interesante