問 6(提出プログラム名:ex0406.c)
1 つの整数 n を読み込み,2 以上 n 未満の n の約数がいくつあるか(その個数)を出力するプログラムを作成しなさい.ただし,必ず while 文を使うこと(do – while 文ではない).
また,プログラムでは if 文は 1 回だけしか使ってはいけません.
なお,n は 3 以上の整数であると仮定してプログラムを作ってよい.
提出するソースファイル(ソースプログラム)のファイル名は ex0406.c としなさい.
【ヒント】
求められている処理を実現する手順(アルゴリズム)として以下のものが考えられます:
(求める約数の個数を cnt として)
① cnt = 0 とし, k = 2 とする(ただし,cnt と k は int 型の変数)
② k < n である限り以下の③,④を繰り返す(while 文で書く):
③ k が n の約数ならば cnt++; を行う.(※ n を k で割った余りが 0 ならば,k は n の約数です)
④ k++;
⑤ cnt を出力する.(←ここは while 文による繰り返しが終わった後)
- 【プログラムの実行結果】(その1)※赤字は実行時にキーボードから入力する内容
次の点に注意せよ:「個」を書き忘れていないか? 最後に改行(\n)を書き忘れていないか?
n を入力してください:11 2 以上 11 未満の約数は 0 個です⏎
- 【プログラムの実行結果】(その2)※赤字は実行時にキーボードから入力する内容
n を入力してください:24 2 以上 24 未満の約数は 6 個です⏎
【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
■ 実行の画面出力が上の例と違う(きちんと確認していない).
(例1)約数の個数が違っている.
(例2)表示が「2 以上 n 未満の約数は」というアルファベット表記になっている.
■ 「n を k で割った余り」を調べるところで誤って「k を n で割った余り」を調べてしまっている.
■ インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).
← [ 問 5 (ex0405.c) ]
ミスが無いことを確認したら次の問題へ → [ 問7 (ex0407.c) ]