Donnerstag, 28. November 2013

Java: Primzahlen berechnen (mit Fußschleifen)

Hier ist das Primzahlen Script mit fußgesteuerten Schleifen. Auch hier beträgt das Limit der Primzahlen den Wert 1000.


boolean primzahlen[];
        primzahlen = new boolean [grenze+1];
       
        // Hier erzeugen wir eine Instanz von prim: Wenn obereGrenze = 100 ist, so stehen die Variablen prim[0], prim[1], prim[2] ... prim[100] zur Verfuegung
        // Alle Zahlen im Feld sind zu Beginn nicht gestrichen
       
        primzahlen[0] = false;
        primzahlen[1] = false;
        int zaehler = 2;    


        // Initialisierung: alle Zahlen >= 2 werden zunaechst als moegliche Primzahlen behandelt:
        while (zaehler <= grenze)
        {
            primzahlen[zaehler]=true;
            zaehler ++;  // <==>  zaehler = zaehler + 1;
        }
       
        int kleinePrimzahl = 1, vielfachheit;
       
        // Erlaeutere die Laufbedingung 'kleinePrimzahl * kleinePrimzahl <= obereGrenze' !
        while (kleinePrimzahl * kleinePrimzahl <= grenze)
        {
            // suche naechste Primzahl in der Liste
            do kleinePrimzahl ++;
            while (!primzahlen[kleinePrimzahl]);
            // loesche die Vielfachen der kleinen Primzahl aus der Liste
            vielfachheit = 2;
            while (vielfachheit * kleinePrimzahl <= grenze)
            {
                primzahlen[vielfachheit * kleinePrimzahl] = false;
                vielfachheit ++;
            }
        }
       
     // Ausgabemethode
        System.out.println("Liste aller Primzahlen bis " + grenze);
        zaehler = 2;
        int prim = 0;
        while (zaehler <= grenze)
        {
            if (primzahlen[zaehler])
            {
                prim++;
                System.out.print (zaehler + "; ");
                // Nach jeweils 20 Zahlen Neue Zeile
                if (prim % 20 == 0)
                    System.out.println("");
            }
            zaehler++;
        }
        System.out.println("\n" + "Es gibt " + prim + " Primzahlen <= " + grenze);
        System.out.println("");

Keine Kommentare:

Kommentar veröffentlichen