過去問データベース 過去問を探す

九州大学 1998年度
文系数学 第3問(c)

問題

次のBASICによるプログラムを実行するとき,以下の問に答えよ.
10 INPUT N
20 S=0
30 M=2*INT(N/2)+1
40 FOR K=1 TO M STEP 2
50 X=N-K*INT(N/K)
60 IF X>0 THEN GOTO 80
70 S=S+K
80 NEXT K
90 PRINT S
100 END

(1) 入力が12のとき出力はいくらか.

(2) 出力が1となるような自然数の入力はどのような数か.

(3) 範囲の自然数を入力するとき,出力が1より大きな奇数となるをすべて求めよ.

出典:九州大学 1998年度 前期日程 第2次学力試験 文系 第3問(c)

方針

プログラムの各行を数式に直し、 が奇数だけを動くこと、50行目の で割った余りであることを読む。したがって出力は の正の奇数約数の和である。(3)では奇数約数の和が奇数になる条件を、奇数部分が平方数であることに言い換えて列挙する。

解答

(1)

30行目で としているので、40行目から80行目のループでは という奇数だけを調べる。50行目の は、 で割った余りである。したがって、70行目で加えられるのは を割り切る奇数 だけである。 の正の奇数約数は

であるから、出力は である。

(2)

出力が1となるのは、正の奇数約数が1しかないときである。これは が奇数の素因数をもたないことと同値である。したがって の形の自然数がすべて求める入力である。

(3)

と書く。ただし は奇数とする。プログラムの出力は の正の約数の和である。 と素因数分解すると、約数の和は

である。各 は奇数なので、 の偶奇は項数 の偶奇で決まる。よって約数の和が奇数であるための条件は、すべての が偶数、すなわち が平方数であることである。

出力が1より大きい奇数になるには、 が1より大きい奇数平方数であればよい。 の範囲で、奇数平方数としてあり得る

である。これらに2のべき乗を掛けて50以下に収めると を得る。したがって求める自然数は である。