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:
e mi da questo errorecodice: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
come vedete, nel codice commentato, ho anche provato ad usare Iterator ma mi toglie i numeri fino ad un certo punto e poi sballa...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)
dov'č l'errore??

Rispondi quotando