Hallo,
hab ein Programm geschrieben, das die Primzahlen von 1 bis zu einem vom Benutzer eingegebenen Höchstwert berechnet und ausgibt. Dabei wird die Zeit gemessen. Im Moment braucht das Programm auf meinem Rechner für die Primzahlen von 1-100.000 ca. 2,5s. Nun lautet meine Frage, ob ich an meinem Programm noch irgendwas optimieren kann, damit die Berechnung noch schneller läuft.
PS: Bin auch offen für einen anderen Berechnungs-Algorithmus
Hier mein Programm:
Danke euch schonmal im voraus
hab ein Programm geschrieben, das die Primzahlen von 1 bis zu einem vom Benutzer eingegebenen Höchstwert berechnet und ausgibt. Dabei wird die Zeit gemessen. Im Moment braucht das Programm auf meinem Rechner für die Primzahlen von 1-100.000 ca. 2,5s. Nun lautet meine Frage, ob ich an meinem Programm noch irgendwas optimieren kann, damit die Berechnung noch schneller läuft.
PS: Bin auch offen für einen anderen Berechnungs-Algorithmus
Hier mein Programm:
Code:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Primzahlen {
public static void main(String[] args) {
boolean isprim;
int input = 0;
int counter = 0;
double timebefore;
double timeafter;
try{
BufferedReader keyboard = new BufferedReader (new InputStreamReader(System.in));
System.out.println ("*********************************************************************************");
System.out.println ("** Berechnung der Primzahlen bis zu einem vom Benutzer eingegebenen Höchstwert **");
System.out.println ("*********************************************************************************\n\n");
System.out.print ("Geben Sie den Höchstwert ein: ");
try{
input = Integer.parseInt(keyboard.readLine());
} catch (NumberFormatException nfe){
System.out.println("Keine gültige Eingabe");
}
} catch (IOException ioe){
System.out.println("Keine gültige Eingabe");
}
timebefore = System.currentTimeMillis();
for (int n = 2; n <= input; n++) {
isprim = true;
for (int i = 2; i < (n / 2); i++) {
if (i == 2 || (i % 2) != 0 ){
if ((n % i) == 0) {
isprim = false;
break;
}
}
}
if (isprim) {
System.out.println(n);
counter++;
}
}
timeafter = System.currentTimeMillis();
System.out.println ("Es gibt " + counter + " Primzahlen von 1 - " + input);
System.out.println ("\nBenötigte Zeit(in s): " + ((timeafter - timebefore)) / 1000);
}
}
Danke euch schonmal im voraus