Site hosted by Angelfire.com: Build your free website today!

Sieb des Eratosthenes in einem Programm


N gibt die Obergrenze der zu betrachtenden Elemente an; die main() Funktion hat nur die Aufgabe, cm_SiebDesEratosthenes() aufzurufen und die Bildschirmausgabe zu managen ... 

#include <iostream.h>

typedef unsigned long UL;

void cm_SiebDesEratosthenes(const UL N, bool feld[]);


int main() {
     const UL N = 1000000;
     bool feld[N+1];
     cm_SiebDesEratosthenes(N, feld);

     UL anzahl = 0;
     for(UL i=2; i<N; ++i) {     // Ausgeben der Primzahlen
         if(feld[i] == true) {
             anzahl++;
             cout << "     " << i;
             if(anzahl % 5 == 0) cout << '\n';
         }
     }
     cout << "\n\n Im Bereich von 2 bis " << N << " befinden sich "
     << anzahl << " Primzahlen.\n";
     return 0;
}


void cm_SiebDesEratosthenes(const UL N, bool feld[]) {

     for(UL i=2; i<=N; ++i) {
         feld[i] = true;
     }

     for(i=2; i<=N/2; ++i) {     // nächste Primzahl 
         if(feld[i]==true)
             for(UL j=i+i; j<=N; j+=i) {
                 feld[j] = false;    // alle Vielfachen dieser Primzahl streichen
             }
     }
}


   Computer    Programmieren (incl. C++ Kurs)    Algorithmen    Bücher    

Zeitschriften    Heavy Metal    Mountainbiking    Meine Katze    

Über mich und die Site    Links    Downloads    Gästebuch    HP mit Umfrage