課題 [10] ポインタ①(7/9)

問 7(提出プログラム名:ex1007a.c)

このプログラム(ex1007a.c)をダウンロードし,その中の関数 to_prime を完成させなさい

このプログラムは,入力として与えられた整数を int 型変数 x に格納した後,
その変数の値を x 以上の素数の中で最小のものへ書き換えて出力することを目的としている.
関数 to_prime はその書き換えを担当する関数である.
なお,ex1007a.c の中ではあらかじめ素数判定のための is_prime が用意してある.
ここでは,x は 2 以上の整数と仮定してプログラムを作って良いものとする.

この問題では関数 main と関数 is_prime の内容は一切書き換えないこと.

【注意】
関数 to_prime戻り値を持たないので戻り値型は void と宣言してある.
これを変更してはいけませんし,戻り値を持たせても(return を書いても)いけません.

【ヒント】
x が素数でない限り, x の値を 1 増やすという繰り返しを行うとよいです.
ここで「x が素数でない」という条件は「 !is_prime(x) 」と書くだけでよいです.
記号 ! が条件の否定を意味します.
(注:実際には x と直接書くことはできないのでポインタを使う必要があります)

  • 【プログラムの実行結果】(その1)赤字は実行時にキーボードから入力する内容
2 以上の整数を入力してください:9
9 以上の最小の素数は 11 です.
  • 【プログラムの実行結果】(その2)赤字は実行時にキーボードから入力する内容
2 以上の整数を入力してください:2
2 以上の最小の素数は 2 です.
  • 【プログラムの実行結果】(その3)赤字は実行時にキーボードから入力する内容
2 以上の整数を入力してください:101
101 以上の最小の素数は 101 です.

【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
実行の画面出力が上の例と違うきちんと確認していない).
main 関数を書き換えてしまっている.
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない)


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