課題 [4] for 文(9/9)

問 9(提出プログラム名:ex0409a.c)
※上級クラスは必須(中級クラスはできる人だけでよい)
(いずれも加点対象)

この問題は while 文または for 文による繰り返し構造と if 文を使った練習問題になっています.
なお,配列を使ってはいけません.ライブラリ関数(平方根を求める関数等)も使ってはいけません.

1 つの整数 n を読み込み,整数 n を(実行例に示すかたちで)素因数分解するプログラムを作りなさい.ただし,提出するファイル名は ex0409a.c とすること.
なお,ここでは n は 2 以上であると仮定してよい.

【ヒント】
2, 3, 4, 5, 6, …, n の順に「割りきれる限り繰り返し割る」という処理を行っていけば素因数分解は求まります.
なお,4 や 6 は素数ではないですが,その前に 2 や 3 で割れるだけ割っているので,その時点でもはや 4 や 6 で割り切れることはないため 4 や 6 が素因数として出力される心配はありません.

(例)n = 12 の場合:
①まず n は 2 で割り切れるので 2 で割って n = 12/2 = 6 となる(2 が素因数として出現).
②引き続き n は 2 で割り切れるので 2 で割って n = 6/2 = 3 となる(2 が素因数として出現).
③次に n は 2 で割り切れないので,2 で割り続けるのは終了する.
④「n は 3 で割り切れないか」という観点で①へ戻って同様のことを繰り返す(すると 3 が素因数として出現).

  • 【プログラムの実行結果】(その1)※赤字は実行時にキーボードから入力する内容
n を入力してください:12
12 = 2 * 2 * 3
  • 【プログラムの実行結果】(その2)※赤字は実行時にキーボードから入力する内容
n を入力してください:124740
124740 = 2 * 2 * 3 * 3 * 3 * 3 * 5 * 7 * 11
  • 【プログラムの実行結果】(その3)※赤字は実行時にキーボードから入力する内容
n を入力してください:2
2 = 2

【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
■ 上の実行例と出力が違っていることを見落としている.
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


問 4 ~問 9 は 5/7(火)12:00 までに提出を済ませてください.※23:59 ではないので注意!
(ex0404a.c ~ ex0409a.c を Moodle から提出してください.)
くれぐれも各問題で記載されている注意事項や「過去にあったミス」を見落とさないようにしてください.
なお,提出後に間違いに気付いた場合,〆切前であれば差し替え(上書き)は可能です.