練習 4(提出プログラム名:p0504.c)
サンプルプログラム 4 (sample4.c) を p0504.c という別の名前のファイルにコピーしなさい.そして,p0504.c を編集して以下の例のように実行できるプログラムを作りなさい.
なお,この問題では必ず for 文を使うこととする.また,if 文も使ってよいが 2 回までとする.
このプログラムではサンプルプログラム 4 と同様に約数を表示するが,
対象となる数が素数の場合は特別に「### 素数」という表示も追加している.
【ヒント】
「整数 i が素数である」⇔「整数 i の約数がちょうど 2 個である」
それゆえ,整数 i の約数を表示する際に個数も数えておいて,その個数が 2 に等しい時だけ特別に表示を追加するとよいです.
なお,約数の個数は i が変わるたびに数え直しになりますので,そのつど,0 に初期化するのを忘れないようにしてください.具体的には i を使った for 文の内側にあって,なおかつ k を使った for 文よりも前で 0 にする必要があります.
- 【プログラムの実行例】(その1)※赤字は実行時にキーボードから入力する内容
【要注意】「### 素数」という表示がその左の数字 1 にくっついてしまわないよう注意せよ.
(※「1」と「###」の間には半角のスペースが入っているので間違えないこと)
n を入力してください:8 1 の約数 = 1⏎ 2 の約数 = 2 1 ### 素数⏎ 3 の約数 = 3 1 ### 素数⏎ 4 の約数 = 4 2 1⏎ 5 の約数 = 5 1 ### 素数⏎ 6 の約数 = 6 3 2 1⏎ 7 の約数 = 7 1 ### 素数⏎ 8 の約数 = 8 4 2 1⏎
- 【プログラムの実行例】(その2)※赤字は実行時にキーボードから入力する内容
n を入力してください:50 1 の約数 = 1⏎ 2 の約数 = 2 1 ### 素数⏎ 3 の約数 = 3 1 ### 素数⏎ ... (中略) ... 47 の約数 = 47 1 ### 素数⏎ 48 の約数 = 48 24 16 12 8 6 4 3 2 1⏎ 49 の約数 = 49 7 1⏎ 50 の約数 = 50 25 10 5 2 1⏎
- 【プログラムの実行例】(その3)※赤字は実行時にキーボードから入力する内容
n を入力してください:1230 1 の約数 = 1⏎ 2 の約数 = 2 1 ### 素数⏎ 3 の約数 = 3 1 ### 素数⏎ ... (中略) ... 1228 の約数 = 1228 614 307 4 2 1⏎ 1229 の約数 = 1229 1 ### 素数⏎ 1230 の約数 = 1230 615 410 246 205 123 82 41 30 15 10 6 5 3 2 1⏎
【過去にあったミス(減点となり,やり直しを命じられる)】
■ 上の3種類の実行例と表示が微妙に違っている(きちんと確認していない).
(例1)出力する記号が違っている(### になっていない).
(例2)素数以外でも「### 素数」と表示させてしまっている.
■ 約数の個数を数えるための変数(仮に cnt とする)を 0 に初期化する(cnt = 0;)位置を間違っている.
約数の個数は i の値が変わるたびに数え直す(0 にリセットする)必要があるため,
i を使った for 文の内側で,なおかつ k を使った for 文よりも前で cnt = 0; をやらないと意味がない.
■ インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).
← [ 練習3 (p0503.c) ]
ミスが無いことを確認したら次の問題へ → [ 練習5 (p0505.c) ]