大整数分解 浅析
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
大整数分解 浅析
解决质因数分解大整数 n n n 。 1 ≤ n ≤ 1 0 18 1\le n\le 10^{18} 1≤n≤1018 。
1.试除法
枚举 [ 2 , n ] [2,\sqrt n] [2,n] 的所有质数判断是否整除。除完之后只剩一个 质数 或者 1 1 1 了。时间复杂度 O ( n ln n ) O(\dfrac{\sqrt n}{\ln n}) O(lnnn) 。
这是一个笨方法但是它告诉我们一些性质
- 对于 n n n 最小的质因子不会大于 n \sqrt n n 。质数除外
2.玄学法
玄学多好啊
2.1 不靠谱的玄学法
先判断 n n n 是不是质数然后在 [ 2 , n ] [2,\sqrt n] [2,n] 里面随机选取一个整数 x x x判断是不是 gcd ( n , x ) ≠ 1 \gcd(n,x)\neq1 gcd(n,x)=1是的话把 n / x n/x n/x 和 x x x 递归下去。
时间复杂度 O ( T log 2 n ) O(T\log^2 n) O(Tlog2n) 到 O ( T n log n ) O(T\sqrt n\log n) O(Tnlogn) 无法保障效率。
2.2 稍微靠谱一点的做法
假设 n n n 的一个最小的素因子为 p p p 那么随机选择两个数 ( i , j ) (i,j) (i,j) 使得 i ≡ j ( m o d p ) i\equiv j\pmod p i≡j(modp) 。则 p ∣ gcd ( i , j ) p|\gcd(i,j) p∣gcd(i,j) 则 gcd ( ∣ i − j ∣ , n ) ≠ 1 \gcd(|i-j|,n)\neq 1 gcd(∣i−j∣,n)=1 。
但是随机枚举两个数判断模 p p p 意义相等时间复杂度不允许怎么办
2.3 引入生日悖论
50 50 50 多个人的班里面至少有 97 % 97\% 97% 的概率能有两个人同一天生日。
为什么呢因为乘法原理。
一开始一个人的时候第一个人能选 365 365 365 天生日
两个人的时候因为不能和第一个人重复所以第二个人能选 364 364 364 天生日概率就是 364 365 \dfrac{364}{365} 365364 。
第三个人不能跟前两个重复所以第三个人只能选 363 363 363 天生日到了他时候不重复的概率就是 363 365 \dfrac{363}{365} 365363 。
把不重复的概率乘起来则前三个人不重复生日的概率是 365 × 364 × 363 36 5 3 \dfrac{365\times 364\times 363}{365^3} 3653365×364×363 。
以此类推前 n n n 个人不重复生日的概率就是 n ! 36 5 n ( 365 − n + 1 ) ! \dfrac{n!}{365^n(365-n+1)!} 365n(365−n+1)!n! 越乘越小。
所以有 23 23 23 个人就能有 50 % 50\% 50% 的概率能有两个人同一天生日。
生日悖论告诉我们另外一个性质 n n n 个数中大约选 n \sqrt n n 次就能达到 50 % 50\% 50% 的概率。
这有什么用途呢比如 2.1 的随机算法枚举第一次碰不到因子的概率为 P 1 P_1 P1 第二次碰不到因子的概率为 P 2 P_2 P2 ……总共碰不到因子的概率就是 P 1 P 2 P 3 . . . P_1P_2P_3... P1P2P3... 。可知碰了很多次之后这个概率大大下降。
但是效率和正确性堪忧。
2.4 pollard_rho
2.2 的改进。
因为一个个随机选太玄学我们就更玄学地生成随机数列判断相邻两个数是否符合条件。我们只会存储两个数。
有章法的生成方法上一个数为 x x x 那么下一个数就是 ( x 2 + a ) % n (x^2+a)\% n (x2+a)%n 。
回到 2.2 的证明假设 p p p 为 n n n 的最小质因子那么
但是这个生成方法有问题到了最后的时候会形成一个环出不去了。如图[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cd29sehM-1657701752031)(C:\Users\Admin\AppData\Roaming\Typora\typora-user-images\image-20220514102638547.png)]
那么我们怎么出这个圈呢
出不去了。如图[外链图片转存中…(img-Cd29sehM-1657701752031)]
那么我们怎么出这个圈呢
联想一下小学的追及问题。甲和乙
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |