アルゴリズム原理:
Pollard Rho は整数分解のための確率的アルゴリズムで、特に合成数の中規模な因子を見つけるのに適しています。アルゴリズム名はその実行軌跡がギリシャ文字 ρ(ロー)に似ていることに由来します。
最適化戦略:
- 試し割り最適化:最初に小素数(2, 3, 5, 7, 11...)で試し割りを行い、小因子を素早く見つける
- Pollard Rho:より大きな合成数に対して、疑似乱数列 x = (x² + c) mod n を使用して因子を見つける
- Floyd の循環検出法:高速・低速ポインターを使用して数列の循環を検出し、空間計算量を最適化
- Miller-Rabin 素数判定:因子を見つけた後、それが素数かどうかを判定し、さらなる分解を回避
- 再帰的分解:見つけた因子を再帰的に分解し、すべての因子が素数になるまで続ける
時間計算量:
- 試し割り:O(√n)、小さな数値や小因子を素早く見つけるのに適する
- Pollard Rho:期待時間 O(n^(1/4))、中程度の因子を持つ数値に非常に効率的
- Miller-Rabin:O(k log³n)、k はテストラウンド数、素数判定に使用