|
|

楼主 |
发表于 2025-12-9 18:08
|
显示全部楼层
波拉德ρ法分解大整数
《初等数论及其应用》(原书第5版中译本)摘抄
4.6 利用波拉德ρ方法分解整数
在本书中,我们将描述一个基于同余的分解方法,它由J.M.波拉德(J.M.Polland)在1974年提出,J.M.波拉德称之为蒙特卡罗方法,
因为它依赖于生成貌似随机挑选的整数;现在称为波拉德ρ法,后面会解释为何这样命名。
设n是一个大合数,p是它的最小素因子。我们的目标是选取整数x0,x1,…,xi,使得它们有不同的模n最小非剩余,但它们模p的最小非负剩余不是全部不同的。
使用一些概率公式易证,在s与√p相比较大,而与√n相比较小,数字x1,x2,…,xi是随机地选取时,这是可能发生的。
一旦找到整数xi和xj,0≤i≤j≤s,满足xi≡xj(mod p),且xi≡/≡xj(mod n),则(xi-xj n)是n的非平凡因子,这是因为p整除xi-xj,但n不整除xi-xj,可用欧几里得算法迅速求出(xi-xj n)。
然而,对每对(xi,xj),0≤i<j≤s,求(xi-xj, n),则共需要求O(s^2)个最大公因子,我们将说明如何减少必须使用的欧几里得算法的次数。
我们用下面的方法寻找这样的整数xi和xj,首先随机选取种子值x0,f(x)是次数大于1的整系数多项式,然后用递归定义
xk+1≡f(xk) (mod n),0≤xk+1<n {附注:k k+1都是x的下标)
计算xk,k=1,2,...,多项式f(x)的选取应该使得有很高概率在出现重复之前生成适当多的整数xi,经验表明,多项式f(x)=x^2+1在这一检验中表现良好,下面的例子说明了如何生成这样的序列。
|
|