Evolton

九州大学 1998年度 前期日程 第2次学力試験 整数・場合の数文系数学 第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) 範囲2N50の自然数Nを入力するとき,
出力が1より大きな奇数となるNをすべて求めよ.

難易度5/ 10計算量4/ 10目安25

整数場合の数 約数・倍数、剰余分類、数え上げ

方針

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

解答

(1)

30行目で M=2INT(N/2)+1 としているので、40行目から80行目のループでは K=1,3,5, という奇数だけを調べる。50行目の X=NKINT(N/K) は、NK で割った余りである。したがって、70行目で加えられるのは N を割り切る奇数 K だけである。 N=12 の正の奇数約数は1,3であるから、出力は 1+3=4 である。

(2)

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

(3) N=2rM と書く。ただし M は奇数とする。プログラムの出力は M の正の約数の和である。MM=p1α1p2α2psαs と素因数分解すると、約数の和は(1+p1++p1α1)(1+p2++p2α2)(1+ps++psαs)である。各 pi は奇数なので、1+pi++piαi の偶奇は項数 αi+1 の偶奇で決まる。よって約数の和が奇数であるための条件は、すべての αi が偶数、すなわち M が平方数であることである。

出力が1より大きい奇数になるには、M が1より大きい奇数平方数であればよい。2N50 の範囲で、奇数平方数としてあり得る M9,25,49である。これらに2のべき乗を掛けて50以下に収めると 9, 18, 36,25, 50,49 を得る。したがって求める自然数は 9, 18, 25, 36, 49, 50 である。

別解

解法2

方針

プログラムを奇数 K の走査と読み、出力を N の奇数約数の和と解釈する。約数を dM/d に組にする方法で、奇数約数の和が奇数となる条件を奇数部分が平方数であることへ直す。

解答

(1)

40行目では K=1,3,5, を走査し、50行目のX=NKINT(N/K)NK で割った余りである。したがって出力は N の正の奇数約数の和である。12 の奇数約数は 1,3 なので、出力は4である。

(2)

出力が1なら、奇数約数は1しかない。これは N が2のべきであることと同値である。したがってN=2r(r=0,1,2,)である。

(3)

N=2rM とし、M を奇数とする。出力は M の全約数の和である。約数を dM/d に組にすると、異なる2数の組の和は偶数である。組にならない約数があるのは d=M/d、すなわち M が平方数のときだけであり、その中央の約数は奇数である。よって出力が奇数であることと M が平方数であることは同値である。

2N50 で、M>1 の奇数平方数は 9,25,49 である。2のべき倍を50以下まで並べると9,18,36,25,50,49.したがって答えは9, 18, 25, 36, 49, 50である。

総評

プログラム問題だが、実質は「奇数約数の和」を読む整数問題で、想定時間は25分程度。50行目が余りを計算していること、60行目と70行目が割り切れるときだけ加算することを正確に翻訳できれば大半は解ける。(3)は単なる列挙ではなく、約数和が奇数になる条件を平方数条件にするのが重要で、9,25,49 から2の倍数を作ると漏れが出にくい。

冊子PDFで見る九大の整数の問題で問題集を作る

出典: 九州大学 1998年度 前期 文系 第3問。問題文はHTML表示のために再入力・数式組版しています。