Salve a tutti,
ho problemi con l'implementazione dell'algoritmo del crivello di Eratostene.

Mi si chiede di creare un array di primi 100 numeri primi e mi risulta parecchio difficile. Posto il codice scritto finora anche se non è completo.

codice:
//Programma che determina i primi 100 numeri primi
#include <iostream> 
#include <stdlib.h> 
#include <iomanip> 
using namespace std; 
int main () {
 const int size = 100;
 int a[size]; 
for(int i=1;i<=size;i++){ //creo array di elementi inizializzati a 1 
a[i]=1; 
for(int j=2;j<=size;j++){ //j setaccia l'array
 if(j%i==0){ //cerca i numeri primi 
a[j]=0; // e pone gli elementi dell'array pari a zero se sono multipli
 }
 }
 cout << setw(7) <<i << setw(13) << a[i] <<endl; 
} 
system("Pause"); 
return 0; 
}
Praticamente non riesco nemmeno a cercare gli elementi dell'array che hanno per indici i numeri primi per poi compattarlo. Il problema, credo, sia nella condizione del ciclo for controllato da j.. .
Cos'è che mi sfugge??