[C] Segmentation fault (core dumped) Programm für Primzahlen?

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.

BakaBoy 
Fragesteller
 24.11.2019, 12:35

Danke Sehr es funktioniert jetzt aber leider muss ich jetzt noch nachgucken wieso zb. die 5er reihe nicht gemacht wird.

1
gogogo  24.11.2019, 12:58
@BakaBoy

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.

0

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.