actionbrowser.com
machArr() Die Methode erzeugt ein int-Array, das die zu prüfende Zahlen in einer aufsteigenden Reihe von 2 bis zur in der Variablen MAX abgelegten Obergrenze speichert. Beim Durchlauf des Arrays werden die Werte darin abgelegt und beim jeweiligen Index der zugehörige boolsche Wert in das Hilfsarray isPrim eingetragen. Hierbei werden der kleinste Wert 2 und alle ungeraden Zahlen als potentielle Primzahlen mit true, alle anderen bereis mit false markiert, da gerade Zahlen als Vielfache von 2 keine Primzahlen sein können. siebe(int[] n) Die Methode stellt den eigentlichen Sieb-Algorithmus bereit. Java primzahlen ausgeben array. Ihr wird das numerische Array mit den zu prüfenden Werten, das von machArr() zurückgegeben wird, als Parameter übergeben. Im Methodenkörper wird zunächst eine leere ArrayList erzeugt, die später alle Primzahlen aufnimmt. In einer Schleife werden alle Werte von 2 bis MAX durchlaufen und die zum jeweiligen Index gehörigen Einträge in isPrim geprüft. Ist der jeweilige Wert des Zahlenarrays dort mit true als Primzahl gekennzeichnet, so wird er in die ArrayList eingetragen.
Ich denke, das Problem ist, dass die Unterbrechung es nach einer Schleife stoppt, so dass es Variable p nicht erhöht, so testet es nur Division durch 2 (denke ich). Wenn ich jedoch den Unterbrechungspunkt entferne, wird bei jedem Durchlauf "Die Summe ist / ist keine Primzahl" ausgedruckt, bis sie die Schleife verlässt. Ich bin mir nicht sicher, was ich hier tun soll. Ihre Methode zum Finden, ob Ihre Zahl prim ist, ist die richtige Methode. Um es so zu machen, dass es nicht konsistent ausdruckt, ob die Zahl prim ist oder nicht, könnten Sie eine externe Variable haben, die angibt, ob die Zahl prim ist oder nicht. Sowie boolean prime = true; if ( sum% p == 0) { prime = false; break;}} if ( prime) System. "); Wenn Sie diese Methode anwenden, wird das Programm annehmen, dass die Zahl "Prime" ist, bis es das Gegenteil beweist. Java primzahlen ausgeben array interview. Wenn es also keine Primzahl gefunden hat, setzt es die Variable auf false und bricht aus der Schleife aus. Dann, nachdem die Schleife beendet ist, müssen Sie nur noch drucken, ob die Zahl prim war oder nicht.
#12 Aaahh... nu verwirrt den armen blub doch nicht. Ein Bitshift bedeutet, das die Bits einer Zahl verschoben werden. int x = 2; // binaer: 0010 int y = x>>1; // Bitshift um 1 Bit nach rechts: 0001 (1 dezimal) int z = x<<1; // nach links: 0100 (4 dez. ) Wie du siehst entspricht das verschieben um 1 Bit nach rechts der Division durch 2, ein Verschieben nach links der Multiplikation mit 2. Und das ist theoretisch schneller als die Multiplikation (bzw Division) - praktisch aber nur, wenn man das mit einer hardwarenahen Programmiersprache (z. b. C/C++) macht. Und selbst da sollte ein vernuenftiger Compiler ein "*2" durch ein "<<1" ersetzen. Hat aber alles nichts mit deinem Primzahlenalgorithmus zu tun... #13 Ich finde dieses Sieben alles andere als effizient. Ich würde ausnutzen, dass als zu untersuchen notwendige Teiler nur die in Frage kommen, die höchstens so groß sind wie die Quadratwurzel aus der zu untersuchenden Zahl. Java Primzahl prüfen. Außerdem müssen nur die vorangegangenen Primzahlen im genannten Intervall zum Test herangezogen werden.