Ragazzi ho questo problema con Set ed HashSet.
Preaticamente devo risolvere il Crivello di Eratostene che di per sč č molto semplice ma lo devo fare usando Set ed HashSet, nel senso che devo usare i metodi add e remove.
La classe č questa:
codice:
public class Eratostene2{
    
    public static void main(String [] args) {

	Scanner in = new Scanner(System.in);
	int n = in.nextInt(); // si assume n>=2


 // costruisco insieme  setPrimi = {2,...,n}

	Set<Integer> setPrimi = new  HashSet<Integer> ();
	for(int k=2 ; k <=n ; k++){
	    setPrimi.add(new Integer(k));
	}
/*	
	Iterator<Integer> it = setPrimi.iterator();
	
	while(it.hasNext()){
		Integer x = it.next();
		int i=2;
		if((x%i)==0 || (x%3)==0 || (x%5)==0)
			it.remove();
	}
*/	
// per ogni k in setPrimi, tolgo da setPrimi i multipli m di k tali che m < k <= n
// RIGA 71
	for(Integer k : setPrimi){
	    for(int m = 2*k ; m <= n ; m += k)  
	         setPrimi.remove(new Integer(m));
	}

 // in  setPrimi sono rimasti solamente i numeri primi p tali che 2 <= p <= n 

	for(Integer p : setPrimi)
	    System.out.print(p + " " );
	
	System.out.println();

    } // end main
} // end class
e mi da questo errore
codice:
Exception in thread "main" java.util.ConcurrentModificationException
	at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
	at java.util.HashMap$KeyIterator.next(Unknown Source)
	at Eratostene2.main(Eratostene2.java:71)
come vedete, nel codice commentato, ho anche provato ad usare Iterator ma mi toglie i numeri fino ad un certo punto e poi sballa...
dov'č l'errore??