Pollard_Rho分解质因数

本文介绍了Pollard_Rho算法用于分解质因数的方法,结合生日悖论探讨如何提高找到质因数的概率。文章通过数学分析和程序模拟,详细解释了算法的原理,并给出了Brent's算法作为快速判环的手段。
摘要由CSDN通过智能技术生成

参考的一篇很棒的文章             参考的另一篇很棒的文章                           一个很棒的pdf


一、分解质因数

分解质因数的话,先想到的就是试除。然而Pollard_Rho这个方法很奇妙。

先想象一个算法:在 [ 2 , N − 1 ] [2,N-1] [2,N1]生成一个随机数,判断一下这个数是不是N的因数。
这里先假设 N = p ∗ q N=p*q N=pq p p p q q q都是质数)。
那么找到这两个数之一的概率就是 2 N − 1 \frac{2}{N-1} N12对吧。当N很大的时候,这个概率就极小了。

二、生日悖论

考虑一下如何增加这个概率呢?这里引入一个生日悖论——
在一个房间里,如果有 23 23 23个或者 23 23 23个以上的人,那么至少存在两个人生日相同的概率超过 50 50% 50

听起来感觉似乎不可思议,那来理论分析一下吧。
考虑一下不存在两个人生日相同的概率——大家的生日都不相同。
(这里假设一年有 365 365 365天)
一个人:他的生日有 365 365 365种选择,概率为 365 365 = 1 \frac{365}{365}=1 365365=1
两个人:第二个人的生日不能选择第一个人的生日,有 364 364 364种选择。
概率为 365 365 × 364 365 ≈ 0.99726 \frac{365}{365}\times\frac{364}{365}\approx0.99726 365365×3653640.99726
三个人:第三个人的生日不能选择前两个人的生日,有 363 363 363种选择。
概率为 365 365 × 364 365 × 363 365 ≈ 0.99179 \frac{365}{365}\times\frac{364}{365}\times\frac{363}{365}\approx0.99179 365365×365364×3653630.99179

以此类推

n n n个人(n<365): 365 365 × 364 365 × . . . × 365 − n + 1 365 \frac{365}{365}\times\frac{364}{365}\times...\times\frac{365-n+1}{365} 365365×365364×...×365365n+1

若n大于365,那么必定存在两个人的生日相同。

n = 23 n=23 n=23时,那么所有人生日不相同的概率大约为 0.492703 0.492703 0.492703
n = 100 n=100 n=100时,通过计算器得出,所有人生日不相同的概率约为 0.000000307249 0.000000307249 0.000000307249

那么对应生日相同的概率:
n = 1 : 1 − 1 = 0 n=1:1-1=0 n=1:11=0
n = 2 : 1 − 0.99726 = 0.00274 n=2:1-0.99726=0.00274 n=2:10.99726=0.00274
n = 3 : 1 − 0.99179 = 0.00821 n=3:1-0.99179=0.00821 n=3:10.99179=0.00821

n = 23 : 1 − 0.492703 = 0.507297 n=23:1-0.492703=0.507297 n=23:10.492703=0.507297,大约为 50 % 50\% 50%
n = 100 : 1 − 0.000000307249 = 0.999999692751 n=100:1-0.000000307249=0.999999692751 n=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值