整数因子分解的Pollard p-1方法

整数因子分解中,试除法虽然适用于大部分情况,但面对特殊大数时效率低下。Pollard p-1算法在1974年由Pollard提出,是一种用于寻找合数n因子的概率性算法。该算法通过阶乘和幂取模运算,以较高概率找到合数的因子。以下是算法的Common Lisp实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       整数因子分解最直观的方法当数“试除法”,数论中的Mertens定理告诉我们76%的奇数都有小于100的素因子,因此对于大多数整数,“试除法”已经足够,但是对于特殊的数,特别是素因子普遍较大的时候,“试除法"的效率便明显不足。

       和素数检验类似,目前几乎所有实用的分解方法都是概率性的算法, 目标是找到能计算x 的算法, 使得(x,N) > 1 的概率较大(而最大公因子可以很快地计算).

       Pollard p - 1 方法由Pollard 于1974 年提出,用来找到给定合数n的一个因子d.

      算法的一个版本大致如下:


common lisp实现:

(defun factorial (n) ;;;阶乘
  (setf m 1)
  (loop for i from 1 to n do
    (setf m (* m i)))
  m)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值