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

Cerinţa
Se citește numărul natural n. Să se afișeze primele n numere naturale prime.

Date de intrare
Programul citește de la tastatură numărul n.

Date de ieşire
Programul afișează pe ecran primele n numere naturale prime, în ordine crescătoare, separate prin exact un spațiu.

Restricţii şi precizări
1 ≤ n ≤ 1000


Exemplu

Date de intrare
5

Date de ieșire
2 3 5 7 11

Eu am facut, dar nu imi functioneaza programul. Mi-l poate verifica cineva?

#include
using namespace std;
int n, i, x, prim, a;
int main()
{
cin>>n;
for(i=1; i<=n; i++)
{
cin>>x;
prim=1;
if(x!=0 || x!=1)
prim=0;
else
if(x%2==0 && x!=2)
prim=0;
else
{
for(a=3; a*a<=i; a+=2)
{if(x%a==0)
prim=0;
}
}
if(prim!=0)
cout<
}
return 0;
}



boiustef: if(x!=0 || x!=1)
prim=0;
-------- nu ai greşit aici? poate tr sa pui numai =
boiustef: şi condiţia problemei spune că se dă un număr natural n şi să se afişeze primele n numere prime, dar la tine în cod văd că introduci n numere şi verifici dacă ele sunt prime...
boiustef: rezolvi cu totul altă problemă...

Răspunsuri la întrebare

Răspuns de grigore2018
1

# include <iostream>

 

using namespace std ;

 

int main()

{

   int n ;

   cin >> n ;

   int k = 2 ;

   while (n)

   {

       n-- ;

       cout << k << ' ' ;

       bool flag = true ;

       while (flag)

       {

           flag = false ;

           k++ ;

           int s = k / 2 ;

           for (int j = 2 ; j <= s ; j++)

           {

               if (k % j == 0)

               {

                   flag = true ;

                   break ;

               }

           }

       }

   }

   return 0 ;

Răspuns de boiustef
1

#include <iostream>

using namespace std;

int main()

{

   int n;

   cout << "n= "; cin >> n;

   cout << "primele " << n << " numere prime: \n";

   if (n==1) cout << 2;

   else

   {

       cout << 2 << " ";

       int k=1, num=3, prim;

       while (k<n)

       {

           prim=1;

           for (int i=3; i*i<=num; i+=2)

               {

                   if (num%i==0) { prim=0; break; }

               }

           if (prim==1)

               { cout << num << " "; ++k;}

           num=num+2;

       }

   }

}


boiustef: se putea de rezolvat folosind ciurul lui Eratostene, dar am vrut să respect ceva logică din codul tău
boiustef: puteţi aprecia la eficienţă ambele coduri propuse (de mine şi Grigore) ?
Alte întrebări interesante