課題 [3] while 文(5/9)

問 5(提出プログラム名:ex0305a.c)

1 つの整数 n を読み込み,2 以上 n 未満の n の約数がいくつあるか(その個数)を出力するプログラムを作成しなさい.ただし,必ず while 文を使うこと(for 文を使って書く方が簡単かもしれないが,ここでは while 文を使うこととする).
なお,n は 3 以上の整数であると仮定してプログラムを作ってよい.
提出するソースファイル(ソースプログラム)のファイル名は ex0305a.c としなさい.

【ヒント】
求められている処理を実現する手順(アルゴリズム)として以下のものが考えられます:

(求める約数の個数を cnt として)
 ① cnt = 0 とし, k = 2 とする(ただし,cntk は int 型の変数)
 ② k < n である限り以下の③,④を繰り返す(while 文で書く):
   ③ kn の約数ならば cnt++; を行う.(※ nk で割った余りが 0 ならば,kn の約数です)
   ④ k++;
 ⑤ cnt を出力する.
(←ここは while 文による繰り返しが終わった後)

  • 【プログラムの実行結果】(その1)赤字は実行時にキーボードから入力する内容
n を入力してください:11
2 以上 11 未満の約数は 0 個です
  • 【プログラムの実行結果】(その2)赤字は実行時にキーボードから入力する内容
n を入力してください:24
2 以上 24 未満の約数は 6 個です

【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
実行の画面出力が上の例と違うきちんと確認していない).
  (例1)約数の個数が違っている.
  (例2)表示が「2 以上 n 未満の約数は」というアルファベット表記になっている.
■ 「nk で割った余り」を調べるところで誤って「kn で割った余り」を調べてしまっている.
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


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