素因数分解
ある数を素因数分解せよと言われたら、いつもExcel さんにお願いしている。ユーザー定
義関数として、「factorization」を定義し実行している。とても手軽で便利だ。
Visual Basic Editor を起動させて、標準モジュールに下記を記述する。
Function factorization(n, d)
If n < d * d Then
factorization = n
Else
If n - Int(n / d) * d = 0 Then
factorization = d & "x" & factorization(n / d, d)
Else
If d = 2 Then
d = 3
Else
If d = 3 Then
d = 5
Else
If d Mod 6 = 1 Then d = d + 4 Else If d Mod 6 = 5 Then d = d + 2
End If
End If
factorization = factorization(n, d)
End If
End If
End Function
Excel の画面で、適当なセルに「=factorization(n,d)」と打ち込んでEnterキーを押すと、
素因数分解の結果が返される。
例 312ー1を素因数分解せよ。(平成12年度学習院大学文学部)
「factorization」を用いると、factorization(3^12-1,2)=2*2*2*2*5*7*13*73
すなわち、 312ー1=24・5・7・13・73 と素因数分解される。
ただ、これは時間の限られた入試問題で、Excel を使うことも不可能なので、
312ー1=531440
と手計算で求めて、下二桁が4の倍数なので、
531440=4×132860 さらに、 132860=4×33215 より、
531440=4×4×33215 さらに、 33215=5×6643 より、
531440=4×4×5×6643
ここで、「6643」について、 −6+643=637 は7の倍数なので、
6643=7×949 より、 531440=4×4×5×7×949
ここで、「949」について、 (−4)×9+49=13 は13の倍数なので、
949=13×73 より、 531440=4×4×5×7×13×73
以上から、 312ー1=24・5・7・13・73 と素因数分解される。
上記のように、手計算風にもっともらしく解をでっち上げたものの、あまりしっくりこない。
このような場合、素因数分解として求めないで、因数分解の問題と考えればスッキリする
解答を得ることが出来る。
(解) x12−1=(x6−1)(x6+1)
=(x3−1)(x3+1)(x2+1)(x4−x2+1)
=(x−1)(x2+x+1)(x+1)(x2−x+1)(x2+1)(x4−x2+1)
ここで、x=3 を代入して、 312ー1=2・13・4・7・10・73 すなわち、
312ー1=24・5・7・13・73 と素因数分解される。 (終)
(コメント) 多分、学習院大学文学部は上記の解答を期待しての出題なのだろう。