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

scrie un algoritm care sa afiseze primele n numere prime (C++)

Răspunsuri la întrebare

Răspuns de andriesboss92
4

Răspuns:

#include <iostream>

using namespace std;

int main()

{

   int n, total_numere = 0, i=2;

   cin >> n;

   if ( n == 1 )

       cout<<" Primul numar prim este: ";

   else if ( n > 1 )

           cout<<"Primele " << n << " numere prime sunt: ";

       else

           cout<<"Variabila n trebuie sa fie mai mare decat 0";

   

   while(total_numere != n && n > 0)

   {

       int prim = 0;

       

       for(int k = 2; k <= i / 2; k++ )

           if ( i % k == 0 )

           {

               prim = 1;

               break;

           }

           

       if ( prim == 0 )

       {

           cout << i << " ";

           total_numere++;

       }

       

       i++;

   }

}

Explicație:

Cel mai mic numar prim este 2. De la cifra 2 vom afisa urmatoarele n numere prime.

Avem variabila total_numere care va contoriza numarul de numere prime. Initial este egala cu 0. Pe parcurs ce gaseste un numar prim ( daca afiseaza numarul prim inseamna ca automat a gasit unul ) incrementez valoarea variabilei in momentul in care am gasit numar potrivit.

Cat timp numerele afisate sunt diferite de n.. adica sunt mai putine decat numarul citit.. vom executa conditiile de verificare a numarului prim.

In interiorul conditiei while determin daca numarul are divizori proprii. Daca gaseste cel putin un divizor variabila prim isi schimba valoarea si oprim for-ul deoarece este inutil sa parcurgem pana la i/2 intrucat este irelevant sa facem asta. Noi avem nevoie sa nu existe divizori. In final, daca numarul nu are divizori ( prim == 0 ) afisam si incrementam total_numere.

Alte întrebări interesante