練習 [5] for 文(4/5)

練習 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 上でインデントを自動で揃える作業をやっていない).


ミスが無いことを確認したら次の問題へ → [ 練習5 (p0505.c) ]