数学とクイズでくつろいで数学の部屋どこよりも遅い!センター試験数学 解説情報関係基礎 第3問 解説

どこよりも遅い!情報関連基礎第3問 解説

最終更新日2010年8月3日

第3問は2〜100の整数が素数であるかどうかの判定、および100の素因数分解を行う手続きの問題。

問1 

 2〜100の整数のうち、どの数が整数であるかを判別するために以下の手順により判別表を作成する。

  1. 表1のように、2〜100の番号とそれぞれに対応する値の欄をもつ判別表を用意する。値の欄はすべて0に初期化する。
  2. 0の値を持つ番号のうち、最も小さい番号をnとする。nの倍数の番号に対応する値の欄をすべてnに書き換える。
  3. 値の欄に0がなくなるまで 2. の手順を繰り返す。

表1

番号979899100

表2

番号979899100

表3

番号979899100

 表1の値の欄で0の値に対応する番号で最も小さい番号は2であるため、2の倍数(2、4、…、100)の番号に対応する値を2に書き換える。この手続きによって表2の形になる。
 次に表2の値の欄で0の値に対応する番号で最も小さい番号は3である。そのため3の倍数(3、6、…、99)の番号に対応する値を3に書き換える。この手続きによって表3の形になる。

 この手続きを行うと、値が0で最も小さい番号として素数を小さい順に選ぶことになる。このため、続いて の倍数の番号に対応する値の欄を5に書きかえる。さらに続いて の倍数の番号に対応する値の欄を7に書きかえる。
 最後に書き換えが行われるのは100以下の最大の素数である97の番号に対応する値の欄である。この書き換えで、判別表が完成する。 

表4

番号979899100
97[オ][カキ]

 完成した判別表は上の表4に示すとおりである。このとき各番号に対応する値に入る数はその番号の最大の素数となる。98=2×7×7、99=3×3×11 であることから 98 の番号に対応する値の欄には、99 の番号に対応する値の欄には11が入る。この判別表において、番号と値とが一致しているものが素数である。

問2.

 問1の手順に基づいて、判別表を作る手続きを作製する。判定表に対応する配列を Yakusu とし、番号は Yakusu の添え字、値は Yakusu の要素で表す。判別表の初期化の手続きは以下の通りである。

(01) i を 2 から 100 まで 1 ずつ増やしながら
(02) | Yakusu[i] ← 0
(03) を繰り返す

 次に、判別表を作成する手続きは以下の通りである。

(04) i を 2 から 100 まで 1 ずつ増やしながら
   |  (要素が0で添え字が最小のものを探す)
(05) |   もし Yakusu[i] = 0 ならば(解答群の0.
(06) |   |  j ← i
   |   |  (j から 100 までの添え字の間で操作を行う)
(07) |   |   j ≦ 100 の間(解答群の3.
   |   |  (i から i ずつ加えた添え字の要素を i にする)
(08) |   |   |  Yakusu[j] ← i
(09) |   |   |  j ← j+i(解答群の8.
(10) |   |  をくり返す
(11) |   を実行する
(12) をくり返す

上の手続きを実行した結果、Yakusu の添え字と要素が一致するものが素数となるため、 素数を判別して印刷する手続きは以下の通りになる。

(01)
 | Yakusu を初期化する手続き。
(03)
(04)
 | Yakusu に判別式の値を入れる手続き。
(12)
(13) i を 2 から 100 まで 1 ずつ増やしながら
   |  (添え字と要素が等しいものを探す)
(14) |   もし Yakusu[i] = i ならば(解答群の5.
   |   |  (その要素を印刷する)
(15) |   |  i を印刷する(解答群の5.
(16) |  を実行する
(17) をくり返す

問3. 素因数分解をするには、商が1になるまで、次々と素数である約数で割っていけばよい。問2で作成した配列 Yakusu の各要素はその添え字の約数の中で最も大きい素数(解答群の1.)が入るため、100の素因数分解は以下の手続きによって得ることができる。

(01)
 | Yakusu を初期化する手続き。
(03)
(04)
 | Yakusu に判別式の値を入れる手続き。
(12)
(13) k ← 100
  (k が 2 以上である間は手続きを行う)
(14) k > 1 の間(解答群の0.
   |  (その要素を印刷する)
(15) |  Yakusu[k] を印刷する
   |  (添え字が k/Yakusu[k] の要素を調べる)
(16) |  k ← k/Yakusu[k](解答群の3.
(17) をくり返す

この手続きを行ったときの変数 k の値と印刷される素数を見ると以下の通りになる。

表4

k 10020
素数終了

このことから変数 k は 100 の次は 20 となり。手続きの行 (15)( Yakusu[k] を印刷する)は回実行される


数学とクイズでくつろいで数学の部屋どこよりも遅い!センター試験数学 解説情報関係基礎 第3問 解説