この概念が出た関連問題

この試験の対策ガイド

基本情報技術者試験 対策ガイド

合格率・勉強法・参考書の選び方をまとめています

見る →
答えと解説を見る(先に解くのがおすすめ)

正解は ア

解説

このプログラムは「エラトステネスの篩(ふるい)」というアルゴリズムを使って素数を見つけるものです。素数とは1とその数自身以外に約数を持たない自然数のことです。 このアルゴリズムの基本的な考え方は以下の通りです: 1. 2からmaxNumまでの数を順番に調べていく 2. ある数iについて、2からその数の平方根までの数で割り切れるかどうかをチェック 3. どの数でも割り切れなければその数は素数 プログラムでは、divideFlagという論理型変数を使って、ある数が素数かどうかを判定しています。最初にtrueを設定し、もし割り切れる数が見つかったらfalseにします。最終的にtrueのままならその数は素数として配列に追加されます。 [a]にmaxNumを入れるのは、2からmaxNumまでの全ての数を調べる必要があるためです。[b]には「i ÷ j の余りが0と等しい」を入れることで、iがjで割り切れるかどうかを判定します。

なぜ他の選択肢は違うのか

選択肢 イ
「i ÷ j の商が1と等しくない」という条件は、素数判定の本質的な条件である「割り切れるかどうか」を正しく判定できません。例えば6÷2=3の場合、商は1ではありませんが、これは6が2で割り切れることを示す適切な判定条件とはなりません。
選択肢 ウ
maxNum + 1は範囲として大きすぎます。素数を探す範囲は引数として与えられたmaxNumまでで十分です。また、maxNum + 1まで調べると、要件で指定された「引数で与えられた整数以下の素数」という条件を満たさなくなってしまいます。
選択肢 エ
maxNum + 1という範囲の問題に加えて、商による判定という不適切な条件を組み合わせています。素数判定には割り切れるかどうか(余りが0かどうか)を見る必要があり、商による判定では正しい結果が得られません。

解くときのポイント

素数判定プログラムを理解する際は、以下の点に注目してください: 1. 範囲の設定:入力値以下の数を調べれば十分 2. 判定条件:割り切れるか(余りが0か)どうかが重要 3. 最適化:ある数nの約数を調べる場合、√nまでチェックすれば十分 また、エラトステネスの篩は基本的な素数判定アルゴリズムとして頻出です。仕組みを図示して理解しておくと、似たような問題にも対応できます。