[C] Segmentation fault (core dumped) Programm für Primzahlen?
Hallo ich muss ein programm für Primzahlen schreiben und dabei den "Sieb des Eratosthenes" benutzen, für mich ergibt der Code sinn und alles soltle funktionieren, aber etwas scheint mir immer " Segmentation fault (core dumped) " zu geben.
Mein Code :
Was ich mache :
Würde mich auf hilfe freuen
MFG BBoy
2 Antworten
Habe mir deinen Code nur ganz kurz angesehen und dabei in den Zeilen 9, 17 und 29 etwas gesehen, was dafür Schuld sein kann.
Wenn du eine Array in Zeile 7 hast, dass [999] hat, dann darfst du da nur mit den Indices 0 .... 998 drauf zugreifen. Deine For-Schleifen nutzen auch z = 999, außerhalb des Bereiches.
Denke, dass du in deiner Datenstruktur viel zu kompliziert bist.
primes[j][0] verstehe ich nicht. Auch die Werte 1 für Primzahl, 2 für teilbare Zahl geht einfacher. Du setzt zwar primes[.][0], liest es nie aus oder vergleichst es. Also kann der Index 0 im zweiten [] weg.
Vorschlag: bool primes[z];
for ( int i = 0; i < z; i++ ) primes[i] = true; // erst mal alle als Primzahl markieren.
In Zeile 19 fällt das == 1 weg. Die Zahl 1 als 'magic number' ist schwer für Außenstehende zu lesen. if ( primes[i] ) ... ist einfacher.
Dann in Zeile 24 hälst du dich nicht mehr an deine Kommentare in den Zeilen 13 und 14. Neben den Werten 1 und 2 kommt hier der Wert 0 hinzu.
Auf den ersten Blick und ohne Dein Programm weiter zu durchforsten, fällt schon mal auf "i <= z"!
Da der Index mit 0 anfängt, muss es "i < z" heissen!
Korrigier das und dann können wir evtl. weitersehen.
Danke Sehr es funktioniert jetzt aber leider muss ich jetzt noch nachgucken wieso zb. die 5er reihe nicht gemacht wird.