A ver si te sirve este..
#include <iostream>
#include <math.h>
using namespace std;
bool esPrimer(int a) {
int i=1;
int b=(int)ceil(sqrt(a));
do {
i++;
} while((a%i!=0)&&(i<=b));
return (i>b);
}
int main(int argc, char *argv[]) {
int i,a=1,c=atoi(argv[1]);
cout << 1;
for (i=2;i<=c;i++) {
if (esPrimer(i)) { a++; cout << "," << i; }
}
cout << "." << endl;
cout << "Numeros primeros encontrados entre 1 y " << c << ": " << a << endl;
return 0;
}
Diría que los encuentra todos, entre 1 y un número que le pases por parámetro...
Su uso es ./programa MAX_NUMERO_QUE_QUIERAS_COMPROVAR, por ejemplo ./programa 1000 y te busca primos de 1 a 1000
Un saludo