Hallo,
ich habe folgendes Programm.
Mit diesem will ich zahlen in eine Liste schreiben und nach dem Prinzip von eratosthenes rausfinden, ob die gesuchte Zahl eine Primzahl ist.
Allerdings tritt deim Eingeben irgendeiner Zahl folgender Fehler auf:
Programm:
wo liegt der Fehler?
ich habe folgendes Programm.
Mit diesem will ich zahlen in eine Liste schreiben und nach dem Prinzip von eratosthenes rausfinden, ob die gesuchte Zahl eine Primzahl ist.
Allerdings tritt deim Eingeben irgendeiner Zahl folgender Fehler auf:
Java:
java.lang.IndexOutOfBoundsException: Index: 56, Size: 54
at java.util.ArrayList.RangeCheck(ArrayList.java:547)
at java.util.ArrayList.remove(ArrayList.java:387)
at SiebdesEratosthenes2.isPrime(SiebdesEratosthenes2.java:38)
Programm:
Java:
import java.util.*;
public class SiebdesEratosthenes2
{
public SiebdesEratosthenes2()
{
}
private static long abrunden(double n) {
return Math.round(n);
}
private static boolean inListe(ArrayList liste, long n) {
if (liste.contains(n)) return true;
return false;
}
public static boolean isPrime(long n) {
ArrayList zahlen = new ArrayList();
for (long z=2; z<=n+1; z++) {
zahlen.add(z);
}
for (int i=2; i<=abrunden(Math.sqrt(n)); i++) {
if (zahlen.get(i) != null) {
for (int k=i; k<=abrunden(n/i); i++) {
zahlen.remove(k*i);
}
}
}
return inListe(zahlen, n);
}
}
wo liegt der Fehler?