Hallo zusammen, ich hätte noch eine kurze Frage hierzu. Es hat nicht direkt etwas mit dem Sieb des Eratosthenes zu tun, sondern allgemein mit der Ausgabe der ersten n Primzahlen. Ich wollte jedoch einen zusätzlichen Thread vermeiden...
Also ich wollte gerade ein kleines Programm schreiben, das mir die ersten n Primzahlen ausgibt. Algorithmus lautet wie folgt:
Überprüfe jede Zahl i auf Teilbarkeit mit sämtlichen Zahlen, die kleiner gleich i/2 sind. Wenn Rest 0, dann teilbar, also keine Primzahl. Wenn nicht Rest 0, dann nicht teilbar, also Primzahl.
Die "gefundenen" Primzahlen i wollte ich dann in ein Array a packen, um schließlich die ersten n Primzahlen, d.h. die Werte a[0] bis a[n-1], auszugeben.
Das Programm läuft bei mir unendlich weiter (wegen der infinite-loop ganz oben...).
Hat jemand eine Idee, wie ich dem Programm mitteile, an der n-ten Stelle zu stoppen?
Die for-Schleife habe ich deswegen "infinite" laufen lassen, weil die Grenze ja unbekannt ist, d.h. die Schleife soll theoretisch schon bis zu einer unendlich hohen Grenze weiterlaufen, aber eben nach der n-ten Primzahl abbrechen.
Also ich wollte gerade ein kleines Programm schreiben, das mir die ersten n Primzahlen ausgibt. Algorithmus lautet wie folgt:
Überprüfe jede Zahl i auf Teilbarkeit mit sämtlichen Zahlen, die kleiner gleich i/2 sind. Wenn Rest 0, dann teilbar, also keine Primzahl. Wenn nicht Rest 0, dann nicht teilbar, also Primzahl.
Die "gefundenen" Primzahlen i wollte ich dann in ein Array a packen, um schließlich die ersten n Primzahlen, d.h. die Werte a[0] bis a[n-1], auszugeben.
Java:
public class Primzahlen {
public static void main(String[] args) {
int n = Integer.parseInt(args[0]); //Ausgabe bei n=3: 2,3,5
for (int i=2; ; i++) {
boolean istprim = true;
for (int x=2; x<=(i/2) && istprim; x++) {
if (i%x == 0) istprim = false;
}
if (istprim) {
int a [] = new int [n];
a [x] = i;
// ??? Hier wollte ich eine for-Schleife unter x von 0 bis n-1 einbauen, hat
// aber nix gebracht...
System.out.println(i);
}
}
}
}
Hat jemand eine Idee, wie ich dem Programm mitteile, an der n-ten Stelle zu stoppen?
Die for-Schleife habe ich deswegen "infinite" laufen lassen, weil die Grenze ja unbekannt ist, d.h. die Schleife soll theoretisch schon bis zu einer unendlich hohen Grenze weiterlaufen, aber eben nach der n-ten Primzahl abbrechen.
Zuletzt bearbeitet: