素因数分解                                 戻る

 ある数を素因数分解せよと言われたら、いつも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 と素因数分解される。  (終)


(コメント) 多分、学習院大学文学部は上記の解答を期待しての出題なのだろう。