エラトステネスの篩のプログラムを作成しているのですが、セグメンテーションエラーが出てしまいます。
「iが消されていない時、iの倍数を消す」箇所が間違っているのはわかるのですが(コメントアウトで実行したら問題なく動いたので)、どこが間違っているのかわかりません。教えていただけたら嬉しいです。
C言語
#include <stdio.h> #define N 100 int main(void) { int i, num[N+1]; //2から100までの値を代入する。 for (i=2; i<=N; i++) num[i] = i; //iが消されていなければ、iの倍数を消す。 for (i=2; i<=N; i++) { if (num[i] == i) { num[i * 2] = 0; } } for (i=2; i<=N; i++) { if (num[i] != 0) printf("%3d", num[i]); } return 0; }