なかけんの数学ノート

センター試験 数学II・数学B 2006年度 第6問 解説

問題編

【問題】
 2以上の自然数$n$を素因数分解し、その結果を出力するプログラムを作成した。

[プログラム]
    100 INPUT PROMPT "n=":N
    110 LET I=2
    120 IF [ア] THEN
    130     LET I=I+1
    140     GOTO [イウエ]
    150 END IF
    160 LET N=N/I
    170 IF N=1 THEN
    180     PRINT I
    190     GOTO [オカキ]
    200 END IF
    210 PRINT I;"*";
    220 GOTO [イウエ]
    230 END

ただし、100行、110行、160行は、それぞれ次の各行と同じ意味である。

    100 INPUT "n=":N
    110 I=2
    160 N=N/I

また、120行~150行は

    120 IF [ア] THEN I=I+1:GOTO [イウエ]

と同じ意味であり、170行~200行は

    170 IF N=1 THEN PRINT I:GOTO [オカキ]

と同じ意味である。

(1) [ア]は「NはIで割り切れない」ということを意味する条件である。[ア]に当てはまるものを、次の0~5のうちから一つ選べ。ただし、INT(X)はXを超えない最大の整数を表す。

 0: N-INT(I/N)*N<0
 1: N-INT(N/I)*I<0
 2: N-INT(I/N)*I<0
 3: N-INT(I/N)*N<>0
 4: N-INT(N/I)*I<>0
 5: N-INT(I/N)*I>0

(2) プログラム中の[イウエ]、[オカキ]に当てはまる行番号を入れよ。

(3) プログラムを実行し、変数Nに60を入力したとき、160行は[ク]回実行され、180行は[ケ]回実行される。また、変数Nに61を入力したとき、160行は[コ]回実行され、180回実行される。

 [ク]~[サ]に当てはまるものを、次の0~7のうちから一つずつ選べ。ただし、同じものを選んでもよい。

 0:0、 1:1、 2:2、 3:3、 
 4:4、 5:59、 6:60、 7:61

(4) nを素数でない自然数とする。このプログラムを変更し、nの約数のうち素数であるものを、重複なく順に出力するようにするには、160行を削除して次の161行~164行を追加し、さらに210行の”*”を”,”と変更すればよい。

    161 IF N-INT(N/I)*I=0 THEN
    162     LET [シ]
    163     GOTO [スセソ]
    164 END IF

 このとき、[シ]に当てはまるものを、次の0~7のうちから一つ選べ。

 0:N=N/I、 1:N=N*I、 2:N=I/N、 3:N=N+I、 
 4:I=I+N、 5:I=I/N、 6:I=N/I、 7:I=I*N

 また、[スセソ]に当てはまる行番号を入れよ。

[広告]

【考え方】
「素因数分解をして表示するプログラム」と、内容が書かれているので処理の想像はつきやすいです。

割り切れるか割り切れないかの処理に「INT」を使うのはよくあります。割り切れるときは、割った数に商を掛ければ元に戻ります。また、割り切れない場合は、割った数に商を掛けても元の数より小さくなります。このことを踏まえて(1)を解答します。

(2)は素因数分解をどうやって行うかを考えれば、何を繰り返すべきかがわかるので、何行目に飛ぶ必要があるかもわかるでしょう。

(3)は、各行が何の処理をしているか、どういうときに処理されるかを考えれば、処理を追っていかなくても答えることができます。

(4)は、素数の重複をなくすために、「素数で割り切れるときに、割り切れなくなるまでその素数で繰り返し割る」という処理をすればいい、と考えれば解くことができます。

次のページへ進む ⇒

[広告]
試験名: 大学入試, センター試験, センターIIB
年度: 2006年度
分野: 整数の性質, コンピュータ
トピック: 整数, コンピュータ
レベル: ふつう
キーワード: 素因数分解, プログラム
更新日:2017/01/24