Brute Force Method
written by Kensuke Shimokawa
ある数nの素因数を求める時、一番最初に思いつく方法は、小さい数から順に割っていく方法である。
- アルゴリズム1
-
1)2で n を割り切れなくなるまで割る。
2)3で n を割り切れなくなるまで割る。
3)4で n を割り切れなくなるまで割る。
・
・
・
nが完全に素因数分解できるまで試す。
- アルゴリズム2
-
1)2で n を割り切れなくなるまで割る。
2)3で n を割り切れなくなるまで割る。
3)2で n を割り切れなくなるまで割っているので、以下奇数で割っていく。
・
・
・
nが完全に素因数分解できるまで試す。
- アルゴリズム3
-
上の方法で、3より大きい奇数について、3で割り切れるものは試行対象とする必要がないので除去する。
つまり、2×3=6以下の素数2、3、5についてはそのまま割り算。
6以上については、6n+1、6n+5のみを割り算の対象とする。
nが完全に素因数分解できるまで試す。
- 結論
-
ならば、5も7も11も……、というようにいくらでも効率化できるが、この方法を押し進めていっても、試行対象のpの増え方は、素数定理よりnlog(n)のオーダなので、あまり大きなpを検出することはできない。
違うアイデアを考えよう。