課題 [11] ポインタ①(8/9)

問 8(提出プログラム名:ex1108.c)

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

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

【関数 to_prime での処理内容】(次の処理を行うだけである)
 x が素数でない限り,x++; を繰り返す

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

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

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

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

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


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