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

Dau coroana!!!
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.


boiustef: de unde e problema??? ca sa o putem testa acolo?
boiustef: # sau numele problemei
infovtm: de pe pbinfo problema 36
boiustef: da, am gasit-o, pe care am rezolvat-o candva

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;

     }

}


pmarian98: O stiu am mai facut-o :D
boiustef: totusi , ce inseamna :D ???
boiustef: :)))
infovtm: nu merge
pmarian98: -__-
boiustef: nu merge ce ?
infovtm: programul
boiustef: pai nu e program... e numai functia care a fost postata de mine cu 100 pnct
Fișier i_prim.cpp Dimensiune 662 B
Data încărcării 28 Aprilie 2018, 21:40 Scor / rezultat 100 puncte
pmarian98: mai intrebat ce inseamna :D, -__-
boiustef: clarrr
Alte întrebări interesante