Hallo,
Ich habe eine kleine Klasse geschrieben, die Primzahlen bis zu einem bestimmten n berechnen soll. Ich habe dafür eine Methode verwendet, wobei stets das Vielfache einer Primzahl aus der Liste gelöscht wird, damit schlussendlich nur noch die Primzahlen übrig bleiben.
hier mein Versuch:
Nun bekomme ich folgende Fehlermeldung:
Vielen Dank!
Ich habe eine kleine Klasse geschrieben, die Primzahlen bis zu einem bestimmten n berechnen soll. Ich habe dafür eine Methode verwendet, wobei stets das Vielfache einer Primzahl aus der Liste gelöscht wird, damit schlussendlich nur noch die Primzahlen übrig bleiben.
hier mein Versuch:
Code:
import java.util.TreeSet;
import java.util.Set;
public class PrimeNumber {
private TreeSet<Integer> set;
private int n;
public PrimeNumber(int n)
{
set = new TreeSet<Integer>();
this.n = n;
fill();
}
public void fill()
{
for(int i = 1; i <= n; i++)
set.add(i);
}
public void getPrimes()
{
for(int j = 2; j<Math.sqrt(n); j++)
{
for(int z: set)
{
if(! (z % j == 0)) set.remove(z);
}
}
}
public void printPrimes()
{
for(int z: set)
System.out.println(z);
}
public static void main(String[] args)
{
PrimeNumber p = new PrimeNumber(1000);
p.getPrimes();
p.printPrimes();
}
}
Da ich mit Sets noch wenig Erfahrung habe, kann ich mit der Fehlermeldung leider wenig anfangen. Kann mir jemand einen Hinweis geben?Exception in thread "main" java.util.ConcurrentModificationException
at java.util.TreeMap$PrivateEntryIterator.nextEntry(Unknown Source)
at java.util.TreeMap$KeyIterator.next(Unknown Source)
at kap21.PrimeNumber.getPrimes(PrimeNumber.java:29)
at kap21.PrimeNumber.main(PrimeNumber.java:47)
Vielen Dank!