C-Programmierung

Sieb des Eratosthenes

Speicherverwaltung: Memset, Realloc etc. | | Header und Module

Bestimmung von Nicht-Primzahlen durch Austreichen aller Vielfachen 2p 3p 4p … einer Zahl p.
Die übrig bleibenden nicht ausgestrichenen Zahlen des Zahlenstrahls sind Primzahlen.

Vielfache von 2 ausstreichen:

nicht-prim  x x x x x x x x x 
Zahlenstrahl23456789101112131415161718192021

Vielfache von 3 ausstreichen:

nicht-prim  x x xxx x xxx x xx
Zahlenstrahl23456789101112131415161718192021

Vielfache von 4 ausstreichen: 4 ist nicht prim, alle Vielfachen sind bereits markiert!

Vielfache von 5 ausstreichen:

nicht-prim  x x xxx x xxx x xx
Zahlenstrahl23456789101112131415161718192021

usw.


C Code-Fragment:

int n;
bool *notprime;

printf("calculate prime numbers up to:");
scanf("%d", &n);

notprime=(bool *)calloc(n+1, sizeof(bool));
assert(notprime);

for (int i=2; i<=n; i++)
   if (!notprime[i])
   {
      printf("%d is prime\n", i);
      for (int j=2*i; j<=n; j+=i) notprime[j]=TRUE;
   }

free(notprime);


Speicherverwaltung: Memset, Realloc etc. | | Header und Module

Options: