Isso é muito simples.
Claro que quanto mais primos você quiser mais tempo vai demorar para rodar, porque
como foi mencionado, eles ficam mais esparsos.
Coloque no MAX_PRIMOS o número de primos que você quer achar, este programa vai
começar do 2.
A idéia é a seguinte:
2 é primo. Cria uma caixinha com o número 2.
Os próximos números vão tentar passar pela caixinha, mas só vão conseguir aqueles que
não forem divisíveis por 2.
O 3 passa. Como só tinha uma caixinha, ele passou por todas as caixinhas então ele é
primo. Cria uma caixinha para ele. Você vai
criando uma fila de caixinhas.
Os números vão passando pela fila, e quando eles passam por algum número que eles são
divisíveis, eles param. Quem consegue passar
pela fila inteira é porque não era divisível por ninguém, ou seja, é primo. E aí ele
ganha uma caixinha nova também...
Não sei se expliquei direito. Aí vai o código:
Ele coloca os números primos no vetor "primos".
***
#define MAX_PRIMOS 10
int primos[MAX_PRIMOS];
int nprimos;
primos[0] = 2;
nprimos = 1;
int i = 3;
int n,j;
do
{
n = i;
for (j=0;j