問題
- 2-50までの素数を求めよ。
- レポートには、N = 50ではない場合も、対応できるかどうかコメントを
- 二重ループの確認問題でもあるので、二重ループを使わなかった人は、必ず例題集の0602を確認しておくこと
自分の方法(アルゴリズム)を、プログラムにしよう。
下のプログラムテンプレートを使い、②にあたる部分を作成せよ。(関数にしてもよい)
実行例
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
解答例
[プログラムテンプレート(未完)]#include <stdio.h> #include <math.h> #define N 50 // プログラム中のNという文字を、50におきかえ int main (void) { int p[N+1]; int i; /* ① p[2] - p[N]を1に初期化 */ for(i = 2; i <= N; i++) p[i]=1; /* ② 自分のやり方をプログラミングしよう */ /* もし素数ではないなら、素数番目の配列pを、0にしよう */ /* ③ 値が1のものは素数。1の場合だけ配列のインデックスをプリント */ for(i = 2; i <= N; i++) if(p[i]==1) printf("%3d", i); printf("\n"); return 0; }
コメント