void cm_SiebDesEratosthenes(const UL N, bool feld[]) {
for(UL i=2; i<=N; ++i) {
feld[i] = true;
}
for(i=2; i*i<=N; ++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
}
}
}
|
Es muss vor der Funktionsdefinition noch (wie im folgenden Listing zu
sehen) mit typedef unsigned long UL; UL als äquivalent zu unsigned
long bekannt gemacht werden.
Arbeitsweise in einem lauffähigen Programm
|