1975年,John M. Pollard提出了第二种因数分解的方法。Pollard rho因数分解方法基于下列几点:
(1) 假定有两个整数 和
使得p可以整除
-
,但是n不能整除
。
(2) 可以证明 。因为p可以整除
-
,可以写成
。但是,因为n不能整除
-
,很明显q不能整除n。这就表明
既可以是1也可以是n的一个因数。
下列算法重复选择和
,直到求出一个合适的对。
(1) 选择,一个小的随机整数称为种子。
(2) 运用函数算出,使得n不能整除
。这里所用的一个函数也许就是
=
(a通常选作1)。
(3) 计算 。如果它不是1,结果是n的一个因数;如果它是1,返回到步骤1并用
重复这个过程。现在我们计算
。注意,在下一轮中,我们以
开始,如此这般。如果我们运用Pollard rho算法列出x的值,就会发现最终要重复的这个值,创建一个和希腊字母rho (
)一样的形状,如图9-3所示。
![]() |
图9-3 Pollard rho连续数 |
为了减少反复的次数,算法做了一些改进。该算法用数对( ,
)开始,并且用
,迭代计算
。在每一次迭代中,我们都应用上述函数式运算(从第二步)第一次计算数对中的第一个元素,第二次计算数对中的第二个元素(参看算法9.6)。
算法 9.6 Pollard rho方法的伪代码
![]() |
复杂度 这种方法需要算术运算 。不过,因为我们希望p小于或等于
,我们希望做
算术运算。这就是说比特操作复杂度是
,它是指数增长的。