/*	Calcolo dei numeri primi minori di n
	usando il Crivello di Eratostene  */

class  Eratostene2
{
	public static void main (String[] args)
	{
		boolean [] primo;
		/*	al termine del programma,
			primo[i] = true sse i e' primo */

		EasyIn easy = new EasyIn();
		System.out.println("inserire un intero positivo");
		int n = easy.readInt() ;
		primo = new boolean [n];

		// inizializzazione del vettore
		primo[0]= false;
		primo[1]= false;
		for (int i =2; i<n ; i++)
			primo[i]= true;

		int j = 2;
		while (j*j < n)
		{
			for (int k =j*j; k<n ; k=k+j)
				primo[k] = false ;

			/*	se k e' un multiplo di j maggiore di j*j
				allora k e' composto e  primo[k] diventa falso  */

			do
				j=j+1;
			while (!primo[j]);

			/*  j assume ora la posizione del successivo elemento
				del vettore che vale true */
		};

		System.out.println("Numeri primi minori di "+n);
		for (int i =2; i<n ; i++)
			if (primo[i])
				System.out.print(i+", ");
	}
}