問題
- N までの素数を求めよ。 (Nは1000までの定数にしよう)
エラトステネスのふるいを、プログラムにしよう。
下のプログラムテンプレートを使い、②にあたる部分を作成せよ。(関数にしてもよい)
実行例
n : 50 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にしよう */ (ここを、書いてください) ------- (新) プログラム確認ツールへ (クリックすると簡単なアンケートのあとに正解例が一度に表示)
(正解のコードを確認するツールです。 利用した皆さんは状況をアンケートで知らせてください。
今は、まだどうしても作成が難しい人は、(A) コードの全体 (B) 実行の様子 の確認を行って、自分のレポートにしてください。わからない部分はハイライトしてChatGPTを利用してみて。
次回はできるだけ自分の力で! 利用した皆さんは状況をアンケートで知らせてください。)
(2024年度4年生のツールです。答え見せすぎだけど、、と議論しましたが、できないときは、まずわかることこそ重要だ!とのことです) ------
/* ③ 値が1のものは素数。 */ printf("n : %d \n", N); for(i = 2; i <= N; i++) /* <= を使ってください */ if(p[i]==1) printf("%3d", i); printf("\n"); return 0; }
コメント