整数因子分解的Pollard-rho方法

Pollard-rho方法


该方法由Pollard于1975年在论文A monte carlo method for factorization中提出,

论文可以见http://www.cs.cmu.edu/~avrim/451f11/lectures/lect1122_Pollard.pdf


这个算法来源于一个事实:

                           随机选取c*sqrt(p)个整数,就有很大概率在这些数中找到两个数模p同余。


算法(pollard-rho)

1) 随机选取a、x(1)

2)计算x(i+1) = (x(i)) ^ 2 + a mod n

3)计算gcd (n, x(2i) - x(i)),如果不等于1或者n,则继续第2步,否则返回该值


(defun pollard-rho (n)
  (let ((a (random n))
    (x (random n))
    (y 0))
    (setf y (mod (+ (expt x 2) a) n))
    (loop for i from 1 do
      (if (and (/= 1 (gcd (- y x) n)) (/= n (gcd (- y x) n)))
          (return))
      (setf x (mod (+ (expt x 2) a) n))
      (setf y (mod (+ (expt (mod (+ (expt y 2) a) n) 2) a) n)))
    (gcd (- y x) n)))

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值