一般分解是的复杂度,那么Pollard-Rho复杂度大概是,嗯就是x的四分之一次方,也就是说即使是longlong 的极限1e18,也能1s内跑的出来(18/4 = 4.5)

原理:

对于一个大整数n,我们取任意一个数x是n的质因数的几率很小,

如果取两个数x1以及x2使得它们的差是n的因数,那么几率就提高了,

如果取x1以及x2使得gcd((x1−x2),n)>1的概率就更高了。(概率的增加是因为组合数增加了)

这就是Pollard-Rho算法的主要思想。

我们随机x1,计算x2,(x[i] = (x[i-1]*x[i-1]%n+c)%n,c是一个自己定的常数 ),然后递归求解

用Miller_Rabbin来判断是否是素因子(单纯的因子的话递归分解它,素因子丢进答案的vector里)

poj1811,这是一道裸题,输出最小的素因子,本身是素数的话输出Prime

下面是代码

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
typedef long long ll;
const int maxn = 1e5+7;
vector<ll> vec;
ll MMul(ll x,ll y,ll mod,ll ans = 0){return (x * y - (long long)(x / (long double)mod * y + 1e-3) *mod + mod) % mod;
}
ll MExp(ll a,ll b,ll mod,ll ans = 1){for(a %= mod;b;b>>=1){if(b&1)ans = MMul(ans,a,mod);a = MMul(a,a,mod);}return ans;
}
bool Miller_Rabin(ll n,ll u = 0,int t = 0,int s = 10){if(n == 2)return true;if(n<2||!(n&1))return false;/// <2 || %2==0for(t = 0,u = n-1;!(u&1);t++,u>>=1);///n-1=u*2^twhile(s--){/// s timell a = rand()%(n-1)+1;ll x = MExp(a,u,n);///a^ufor(int i=0;i<t;i++){ll y = MMul(x,x,n);/// (a^u)^2if(y == 1&&x!=1&&x!=n-1)return false;x = y;}if(x!=1)return false;/// (a^p-1)%p != 1}return true;
}
ll Pollard_Rho(ll n, int c){ll i = 1, k = 2, x = rand()%(n-1)+1, y = x;while(true){i++;x = (MMul(x, x, n) + c)%n;ll p = __gcd((y-x+n)%n,n);if(p != 1 && p != n) return p;if(y == x) return n;if(i == k){y = x;k <<= 1;}}
}
void Find(ll n, int c){if(n == 1) return;if(Miller_Rabin(n)){vec.push_back(n);return;}ll p = n, k = c;while(p >= n) p = Pollard_Rho(p, c--);Find(p, k);Find(n/p, k);
}
int main(){int t;cin>>t;while(t--){ll k;cin>>k;if(Miller_Rabin(k)){cout<<"Prime"<<endl;continue;}vec.clear();Find(k,2333);sort(vec.begin(),vec.end());cout<<vec[0]<<endl;}return 0;
}

唯一分解之Pollard-Rho算法相关推荐

  1. 大整数分解——Pollard Rho算法

    延续上一篇,这次来讲一讲大整数分解算法的应用. 要解决的问题很简单,对一个整数进行分解质因数. 首先还是效率非常低的暴力算法,相信大家都会,不多提. 和上次一样,当数达到非常大的时候,分解将变得非常困 ...

  2. c语言用rho函数求复数模长,Pollard Rho 算法简介

    $\text{update 2019.8.18}$ 由于本人将大部分精力花在了cnblogs上,而不是洛谷博客,评论区提出的一些问题直到今天才解决. 下面给出的Pollard Rho函数已给出散点图. ...

  3. BZOJ 5330 Luogu P4607 [SDOI2018]反回文串 (莫比乌斯反演、Pollard Rho算法)

    题目链接 (BZOJ) https://www.lydsy.com/JudgeOnline/problem.php?id=5330 (Luogu) https://www.luogu.org/prob ...

  4. 因数分解 Pollard rho

    因数分解 Pollard rho 算法思路 随机生成两个数a,ba,ba,b,然后求gcd⁡(n,a−b)\gcd\pod{n,a-b}gcd(n,a−b),如果其值不为111,则这个数就是nnn的一 ...

  5. 素数判定质因数分解(数论)(Miller Rabin)(Pollard Rho)

    太玄学了! 我真的被概率的魅力折服了.此前我认为1便是1,0.9999999999-便是0.9999999999-. 但实际上它们有着千丝万缕的关系. 试想,如果一件事发生的概率是0.99999999 ...

  6. 【快速因数分解】Pollard's Rho 算法

    算法目的 给一个数n,快速提取n的一个因数. 算法根据:生日悖论 讲生日悖论之前,先看一个东西. 给出[1-1000]的数,从中任意选出一个数为k的概率是110001\over 100010001​. ...

  7. 64位以内Rabin-Miller 强伪素数测试和Pollard rho 因数分解解析

    在求解POJ1811题Prime Test中应用到的两个重要算法是Rabin-Miller强伪素数测试和Pollard r因数分解算法.前者可以在的时间内以很高的成功概率判断一个整数是否是素数.后者可 ...

  8. 整数的素因子分解:Pollard rho method

    参考: 1.CLRS<算法导论> 2.http://www.csh.rit.edu/~pat/math/quickies/rho/#algorithm Pollard rho方法是随机算法 ...

  9. 简述大数分解算法Pollard Rho和Pollard p-1

    大数分解问题其实至今都是一个世界级难题,最常见的分解法是从2一直找到sqr(N),作为一个密码学专业的学生,每次看到别人这么做来进行因子分解,自己都控制不住想要制止他,因为这个算法的效率简直太太太太太 ...

  10. 4.2 Pollard p-1算法

    文章目录 算法 Python实现 算法   1974年,John Pollard发明了p-1算法,其灵感来自于费马小定理.p-1算法一个重要的概念就是B-powersmooth,这个不太好翻译,pow ...

最新文章

  1. 逐行阅读redux源码(二)combineReducers
  2. python初学者视频-python从入门到精通视频(全60集)
  3. 【杂谈】为什么有三AI自断财路,从来不接广告
  4. 静态分配和动态分配内存的区别
  5. 一、linux搭建jenkins+github详细步骤
  6. MongoDB中文社区年终盛典
  7. JDK的bug导致Java文件删除不了,必须fgc
  8. 深入理解Nginx~正常运行的配置项
  9. 在linux系统下做软raid教程
  10. fpga如何约束走线_FPGA入门之我见- 布局布线(place route,PAR)
  11. 计算机基础知识(免费、全面)
  12. 【JoJo的摄影笔记】黎明女神的呼唤—— 佳能王朝霸业崛起
  13. 反锐化掩膜_带噪声抑制的反锐化掩模图像增强算法
  14. kettle导数据入HBase数据库报错解决
  15. python设置坐标轴刻度宽度_使用轴网格matplotlib时设置刻度宽度
  16. 求解三维空间中两向量之间的夹角
  17. JavaScript实现加密与解密详解
  18. 基于Singer映射和参数位置自适应更新机制的改进被囊群算法
  19. 我采访了同事,让他掏出了每天都会浏览的干货网站...这几个网站也太牛了吧!
  20. 计算机四级数据工程师题库,全国计算机等级考试四级数据库系统工程师练习题...

热门文章

  1. uniapp 定位服务_uniapp使用高德地图定位
  2. 初步探索C++深浅拷贝
  3. 丧心病狂的Android混淆文件生成器
  4. 背单词App开发日记1
  5. MOVE-CORRESPONDING
  6. [Python数据分析]NBA的球星们喜欢在哪个位置出手
  7. 基于matlab的动态心形图案
  8. MFS分布式文件系统
  9. 用Excel做直方图(2):频率分布直方图
  10. Mars3D中 popup 弹窗问题汇总