Sieb des Eratosthenes mit C

Gast #2522772
Lesenswert?

Hallo,

ich habe die letzte Zeit ein wenig C programmiert und dabei stellte ich 
mir die Frage einer Primzahlenerkennung.

Diese habe ich anschließend mittels C programmiert nach dem Prinzip des 
Eratosthenes.

Ich möchte alle Primzahlen zwischen 0 und 99 angegeben bekommen.

Wenn ich mein Programm nun im cmd starte, kommen alle Primzahlen bis 97 
(das stimmt auch) und anschließend kommt das Problem, dass das Programm 
nicht mehr funktionieren würde.

Wenn ich jedoch nur die Zahlen zwischen 0 und 49 ermittlen möchte 
funktioniert mein Programm einwandfrei.

Code:
1
#include <stdio.h>
2

3
#define TRUE 1
4
#define FALSE 0
5
#define MAX_ZAHL 100 /* die Zahlen zwischen 0 und 99 */
6

7
void primzahlenErkennen(char* values); /* forward declaration */
8

9
int main(int argc, char* argv[]){
10
  char values[MAX_ZAHL];
11
  int i = 0;
12

13
  for(i = 0; i < MAX_ZAHL; i++){
14
    values[i] = TRUE;
15
  }
16

17
  i = 0;
18

19
  primzahlenErkennen(values);
20

21
  for(i = 0; i < MAX_ZAHL; i++){
22
    if(values[i] == TRUE){
23
      printf("%d\n", i);
24
    }
25
  }
26

27
  return 0;
28
}
29

30
void primzahlenErkennen(char* values){
31
  int i = 2;
32
  int j;
33

34
  for(i = 2; i < MAX_ZAHL; i++){
35
    if(values[i] == TRUE){
36
      j = i; /*wenn es eine Primzahl ist, sind alle vielfachen keine */
37
      while(j < MAX_ZAHL){
38
        j = j + i;
39
        values[j] = FALSE;
40
      }
41
    }
42
  }
43
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren