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

Sa se scrie un program care:
-determina cel mai mare numar prim mai mic decat numarul dat
-determina toate numerele prime mai mici decat numarul dat
(c/c++)

Răspunsuri la întrebare

Răspuns de boiustef
2

#include <iostream>

using namespace std;

short v[20001];

void ciur()

{

   int i, j, n=20000;

   v[0]=1; v[1]=1;

   for(i=2;i<=n/2;++i)

       if(v[i]==0)

           for(j=i+i;j<=n;j+=i)

               v[j]=1;

}

int main()

{

   ciur();

   int n, i, prim, gasit=0;

   cin >> n;

   for (i=n; i>1; --i)

   {

       if (v[i]==0)

       {

           gasit=1;

           prim=i;

           break;

       }

   }

   if (gasit)

       cout << "a) cel mai mare numar prim mai mic decat " << n << " este " << prim << "\n";

   else cout << "a) nu exista numar prim mai mic decat " << "\n";

   if (gasit)

   {

       cout << "b) numerele prime mai mici decat "<<n<<" sunt: " << "\n";

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

           if (v[i]==0) cout << i << " ";

   }

   else cout << "b) nu exista numere prime mai mici decat " << n<< "\n";

   return 0;

}


alexandra45154: daca te rog, mi-ai putea explica rezolvarea problemei?
boiustef: da, cu functia ciur() se formeaza un tabel in care numerele prime sunt semnalate cu 0 iar cele neprime prin 1 (asa numitul ciur a lui Eratostene
boiustef: in main() generam ciurul, si pornim de la n in jos si cautam in vectorul v (adica in ciur) un element egal cu zero, adica numar prim
boiustef: cum gasim, oprim cautarea si afisem raspunsul
alexandra45154: mersi mult:)
Alte întrebări interesante