Pai, hmm. Ca sa intelegi mai bine, iei un i=1 si s=0. Citesti n, si tot ii cresti valoarea lui i. Cand i este prim, lui s ii mai adaugi o unitate, si tot asa pana devine egal cu n.
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int n,s=0,i,d,ok;
cout<<"n=";
cin>>n;
i=0;
while (s!=n) // nu bag s<=n deoarece imi mai afiseaza un numar prim in plus decat ar trebui
{
i++;
/* Aici verificam daca este prim */
if (i%2==0)
{
if (i==2)
{
cout<<"2 ";
s++;
}
}
else
{
ok=true;
d=3;
while (d<=sqrt(i) and ok)
if (i%d==0)
ok=false;
else
d=d+2;
if (ok)
{
cout<<i<<" ";
s++;
}
}
}
return 0;
}