Hallöchen,
ich habe mir ein Programm geschrieben um alle Primzahlen in einem fest definierten Bereich heraus zu finden. Dabei habe ich einen Counter eingebaut um zu gucken wie lange mein Laptop für die Rechenoperationen braucht. Das Programm funktioniert bisher auch sehr gut, nur kann ich bei einer Eingabe ab ca. 100000 von einer Fehlermeldung ausgehen.
Es währe sehr cool wenn mir jemand helfen könnte, ich kann nicht verstehen wie mein Array nicht genügend Felder haben kann.
ich habe mir ein Programm geschrieben um alle Primzahlen in einem fest definierten Bereich heraus zu finden. Dabei habe ich einen Counter eingebaut um zu gucken wie lange mein Laptop für die Rechenoperationen braucht. Das Programm funktioniert bisher auch sehr gut, nur kann ich bei einer Eingabe ab ca. 100000 von einer Fehlermeldung ausgehen.
Java:
package eratosthenes;
import java.util.Scanner;
import java.util.Timer;
import java.util.TimerTask;
/**
*/
public class Eratosthenes {
public static void main(String[] args) {
int eingabe = 0;
Scanner in = new Scanner(System.in);
System.out.println("Geben Sie eine ganze Zahl ein, die größer als 1 ist. ");
eingabe = in.nextInt();
do {
if (eingabe <= 1) {
System.out.println("Ihre Eingabe muss größer als 1 sein.");
System.out.println("Eingabe einer ganzen Zahl, die größer als 1 ist: ");
eingabe = in.nextInt();
}
} while (eingabe <= 1);
final long startTime = System.nanoTime();
boolean[] teilbar = new boolean[eingabe + 1];
for (int i = 2; i < teilbar.length; i++) {
teilbar[i] = false;
}
for (int i = 2; i < teilbar.length; i++) {
while (teilbar[i]) {
i++;
}
for (int j = i; j*i < eingabe; j++) {
teilbar[i * j] = true;
}
if (! teilbar[i] && i < eingabe) {
System.out.println("Die " + i + " ist eine Primzahl. ");
}
}
final double duration = (System.nanoTime() - startTime)/1000000000.0;
// double zeit = duration/1000000000.0;
System.out.println(duration + " s");
}
}
Es währe sehr cool wenn mir jemand helfen könnte, ich kann nicht verstehen wie mein Array nicht genügend Felder haben kann.