Primzahlen bis X Java

... komplette Frage anzeigen

3 Antworten

Scheint zu funktionieren. Warscheinlich ist der Ausgabepuffer deiner Console zu klein und die ersten Zeilen (Zahlen) werden aus dem Puffer gelöscht, bevor du sie lesen kannst. Debug doch einfach durch, dann wirst du sehen, dass 3,5,7,11 auch bei 500 gefunden werden.

Davon abgesehen: Gewöhn dir an, bei allen Kontrollstrukturen schließende und öffnende Klammern zu setzen. Warum? Naja falls du mal ein zweites Statement dazu nehmen möchstest, wirst du keine unliebsamen Überraschungen haben. Außerdem würde es reichen wenn du die äußere for Schleife bei 3 beginnst und nicht bei 2 (spielt aber keine große Rolle, passiert ja nur einmal). Eine weitere optimierung würde darin bestehen, dass du das prüfen schon abbrichst, wenn du 3 Teiler gefunden hast. Da musst du nicht noch weiter prüfen, die Zahl wird keine Primzahl mehr werden. Da kannst du ordentlich Zeit einsparen.

Und um noch mehr Zeit zu sparen, kannst du mal nach dem Sieb des Eratosthenes googlen. Das dürfte dann noch schneller sein. Außer du sollst die Primzahlen natürlich nach einem vorgegebenen Algorithmus berechnen :).

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von HomerJay98
29.10.2012, 20:29

danke, aber wie gesagt bin ich anfänger, also wie "debugge ich durch"? ^^ hmmm... und wie mach ich dass er nach 3 teilern aufhört? xD leider sollen wir das so machen, sonst hätte ich den Sieb des Eratosthenes schon benutzt^^ vielen dank schonmal an der stelle :)

0

Mach mal einen Vorschlag, welche Bedeutung Deine Codezeilen haben sollen. Die beste Vorgehensweise, inhaltliche Fehler zu finden, ist zu versuchen, den Code anderen Leuten zu ERKLÄREN.

Also: Versuche, anhand dessen, was Du über Primzahlzerlegung gelernt hast, Dein Verfahren zu beschreiben! Wie bzw. wo in Deinem Code werden die Faktoren gefunden, durch die... ja: WAS eigentlich? ...teilbar sein soll?!

Ich vermute, daß Du, sobald Du versuchst, die Funktion der inneren Schleife zu beschreiben, in die Bredrouille kommen wirst...

Antwort bewerten Vielen Dank für Deine Bewertung

Wie soll das jemand sagen, wenn du nicht mehr dazu offenlegst?

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von HomerJay98
28.10.2012, 23:33

public class Primzahlen

{

    public static void main(int z1)
    {
            int max = z1;
            int n;                                                       
            int x;                                                    
            int teiler;                                                     
            int rest;                                                      
            for (n = 2; n <= max; n++)                           
            {
                    if (n!=2)
                    {
                            teiler = 0;
                            for (x = 1; x <= n; x++)   
                            {
                                    rest = n % x;                 
                                    if (rest == 0)                         
                                            teiler++;


                            }
                            if (teiler == 2)                               
                                    System.out.println(n);
                    }
                    if (max<=2)
                    {
                            System.out.println ("Bis "+z1+" gibt es keine Primzahlen.");
                    }
            }
    }

}

0

Was möchtest Du wissen?