Hallo ich habe mir einen Primzahlgenerator geschrieben
der funktioniert soweit auch, nur spuckt er ständig ne 0 aus.
Hat wer ne Idee woran dies liegen kann und ggf. eine wie ich es verhindern kann?
Die Methode mit dem Array mag zwar nicht die schönste sein aber ich brauche unter umständen in dem Programm in welches ich dies einfüge noch das gesammt Array.
Quellkot:
der funktioniert soweit auch, nur spuckt er ständig ne 0 aus.
Hat wer ne Idee woran dies liegen kann und ggf. eine wie ich es verhindern kann?
Die Methode mit dem Array mag zwar nicht die schönste sein aber ich brauche unter umständen in dem Programm in welches ich dies einfüge noch das gesammt Array.
Quellkot:
Code:
public class Primzahlgenerator {
public static int generate() {
int limit = 100; // Bis zu dieser Zahl wird auf Primzahlen untersucht
long zahl = 2; // Startwert = Die erste Primzahl
int zaehler = 0; // Zählt die gefundenen Primzahlen hoch
long []container = new long[limit/3]; // Speichert die gefundenen Primzahlen
double random;
int high;
int low = 0;
int ausgabe = 0;
while( zahl< limit) {
boolean primzahl = true;
for (int l_iLoop = 0; (l_iLoop < zaehler); l_iLoop++){ // Jede natürliche Zahl ist durch Primzahlfaktoren darstellbar
if (container[l_iLoop]*container[l_iLoop] > zahl)
break;
if ((zahl % container [l_iLoop]) == 0)
primzahl = false; // Wenn kein Rest bleibt wird Primzahl auf false gesetzt
}
if (primzahl){
container [zaehler] = zahl; // Primzahl in container speichern...
zaehler++; // zaehler erhöhen...
}
zahl = zahl + 1; // nächster Testwert
}
//Random Primzahl Ausgabe
high = container.length; //gibt die länge des arrays aus
random = Math.random() * (high - low) + low; //erzeugt eine zufallszahl zwischen 0 und größe des Arrays
ausgabe = (int)random; //muss auf int gecastet werden
return (int)container[ausgabe]; //gibt die entsprechende Stelle des Arrays aus
}
}