【知识点】大数分解与素数判定 --- 【Miller-rabin算法】【pollard-rho算法】

本文详细介绍了用于素数判定的Miller-Rabin算法和质因数分解的pollard-rho算法。Miller-Rabin算法基于费马小定理,通过随机数和二次探测优化来高效判断素数。pollard-rho算法通过gcd运算寻找因子,可用于快速分解大整数。文章包含算法的C++实现,并提供了随机数生成的小知识。
摘要由CSDN通过智能技术生成

1.Miller-rabin算法:

Miller-rabin算法是一个用来快速判断一个正整数是否为素数的算法。

根据费马小定理,如果p是素数,则a^(p-1)≡1(mod p)对所有的a∈[1,n-1]成立。所以如果在[1,n-1]中随机取出一个a,发现不满足费马小定理,则证明n必为合数。

但是每次尝试过程中还做了一个优化操作,以提高用少量的a检测出p不是素数的概率。这个优化叫做二次探测。它是根据这个定理:如果p是一个素数,那么对于x(0<x<p),若x^2%p=1,则x=1或p-1。】

为了计算a^(n-1)mod n,我们把n-1分解为x* 2^t的形式,其中t>=1且x是奇数;因此,a^(n-1)≡(a^x)^(2^t)(mod n),所以可以通过先计算a^x mod n,然后对结果连续平方t次来计算a^(n-1) mod n。一旦发现某次平方后mod n等于1了,那么说明符合了二次探测定理的逆否命题使用条件,立即检查x是否等于1或n-1,如果不等于1也不等于n-1则可直接判定p为合数。


2.pollard-rho算法:

是一个用来快速对整数进行质因数分解的算法,需要与Miller-rabin共同使用。

算法原理:

1.通过

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值