Das Sieb des Eratosthenes
-
Hallo,
ich habe versucht "Das Sieb des Eratosthenes" zu implementieren aber ich habe leider dumme Fehler im Programm weil er komischweise die 99 ausgibt die ja aber keine Primzahl ist, hier mein Code:
const int MAX = 100; bool zahlen[MAX] = {false}; for(int i=2;i<MAX;i++) { for(int j=2;j<MAX/i;j++) { zahlen[i*j] = true; } } for(int i=2;i<MAX;i++) if(!zahlen[i])cout << "Zahl: " << i << "\n";Warum gibt der die 99 aus ??
Gruß,
Sil
-
Hmm, dein Code sieht eigentlich ganz ok so aus. Mir fällt nur was an der Arraygröße auf. Bei meiner Funktion deklariere ich das Array mit [MAX+1].
Gruß Chris
-
for(int j=2;j**<=**MAX/i;j++)
-
MAX/i ist ein integer (es wird abgerundet), Du vergleichst auf <
-
Stimmt, habe ich auch zuerst nich gesehen. Ich prüfe auch in beiden Schleifen auf <=
for (int i = 2; i <= N/2; i++) for (int j = 2; j <= N/i; j++) a[i*j] = 1;