题面

传送门

题解

题解

太神仙了学不来orz

//minamoto
#include<bits/stdc++.h>
#define R register
#define ll long long
#define dd long double
#define fp(i,a,b) for(int i=a,I=b+1;i<I;++i)
#define fd(i,a,b) for(int i=a,I=b-1;i>I;--i)
#define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v)
using namespace std;
const int base[]={2,3,7,61,24251};
inline ll mul(R ll x,R ll y,R ll P){R ll k=(dd)x*y/P;k=x*y-k*P;return k<0?k+P:k;}
ll gcd(ll x,ll y){return y?gcd(y,x%y):x;}
inline ll g(R ll x,R ll n,R ll c){x=mul(x,x,n)+c;return x>n?x-n:x;}
inline ll Abs(R ll x){return x<0?-x:x;}
ll ksm(R ll x,R ll y,R ll P){R ll res=1;for(;y;y>>=1,x=mul(x,x,P))if(y&1)res=mul(res,x,P);return res;
}
bool miller(ll x){if(x<2||x==46856248255981ll)return false;if(x==2||x==3||x==7||x==61||x==24251)return true;if(!(x&1)||!(x%3)||!(x%61)||!(x%24251))return false;ll p=x-1;int t=0,j;while(!(p&1))p>>=1,++t;fp(i,0,4){if(base[i]>x)break;ll res=ksm(base[i],p,x);if(res==1||res==x-1)continue;for(j=1;j<=t;++j){res=mul(res,res,x);if(res==x-1)break;}if(j>t)return false;}return true;
}
const int M=(1<<7)-1;
ll rho(ll n){if(!(n&1))return 2;if(!(n%3))return 3;ll x=0,y=x,t=1,q=1,c=rand()%(n-1)+1;for(R int k=2;;k<<=1,y=x,q=1){fp(i,1,k){x=g(x,n,c);q=mul(q,Abs(x-y),n);if(!(i&M)){t=gcd(q,n);if(t>1)break;}}if(t>1||(t=gcd(q,n))>1)break;}return t;
}
ll res;
void find(ll x){if(x==1||x<=res)return;if(miller(x))return res=x,void();ll p=x;while(p==x)p=rho(x);while(x%p==0)x/=p;find(p),find(x);
}
int main(){srand(time(0));
//  freopen("testdata.in","r",stdin);int T;ll n;scanf("%d",&T);while(T--){scanf("%lld",&n),res=0,find(n);res==n?printf("Prime\n"):printf("%d\n",res);}return 0;
}

转载于:https://www.cnblogs.com/bztMinamoto/p/10432661.html

P4718 【模板】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. 洛谷P4718 【模板】Pollard-Rho算法

    虽然很久以前就听说过PR算法,但前几天第一次打. 首先miller rabin判断素数,不在复杂度瓶颈. pollard rho倍增环长,复杂度是\(O(n^{\frac{1}{4}} log n)\ ...

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

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

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

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

  9. 我的所有优质博客全部开源啦(我自己原创的《ACM模板》《算法全家桶》《算法竞赛中的初等数论》 PDF免费下载)

    你好呀ヾ(≧▽≦*)o 我是繁凡さん 这两年来我写了很多长篇文章,主要涉及数据结构,算法,程序设计竞赛,数学,计算几何等方面的内容: <数据结构>C语言版(清华严蔚敏考研版) 全书知识梳理 ...

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

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

最新文章

  1. Python将JSON格式数据转换为SQL语句以便导入MySQL数据库
  2. android语法高亮编辑器,HighlightTextEditor
  3. linux登录主机命令,linux w命令查询已登录主机的用户信息
  4. Nokia Imaging SDK滤镜使用入门
  5. 编程语言EF速度测试(4):nsieve-bits
  6. LINUX下用C判断一个进程是否活着
  7. 3,graph语法学习
  8. 传智播客 刘意_2015年Java基础视频-深入浅出精华版 笔记(day01~day10)
  9. Qt中添加鼠标右键菜单
  10. python做三维图片挑战眼力_查找「儿童大家来找茬图片」安卓应用 - 豌豆荚
  11. Unity - Projector - 实时[假]阴影
  12. ISBN(国际标准书号)的校验
  13. App inventor打地鼠
  14. PPPD chat中文帮助
  15. 如何快速查询SCI期刊JCR和ISO缩写?
  16. 走向Web渗透工程师
  17. 闲人闲谈PS之十七——系统切换带来的冲击
  18. 认认真真推荐10个顶级技术公众号
  19. Nutanix荣膺 “超融合基础架构领导者” 称号
  20. 电机 输送机 机械手 提升机 发酵罐 减速机 破碎机

热门文章

  1. 运行mapreduce程序yarn的web端显示进度
  2. c 语言 while break,26 C 语言中的break和continue - C 语言基础教程
  3. db2 linux 平台下迁移_Linux 下的 DB2数据库的迁移
  4. 伺服电机停的时候会冲一下_造成伺服电机抖动的原因竟然是它!内附解决方法...
  5. 霍纳法树形流图中处理机p个数_处理机管理(进程管理)
  6. matlab能力处理,书+程序《MATLAB图像处理:能力提高与应用案例》赵小川
  7. jquery实现页面提示,数据正在加载中。(
  8. 1151压力变送器型号_日本进口横河EJA530E压力变送器型号解读!
  9. C语言: GDB调试技术(一)
  10. LeetCode - Easy - 118. Pascal‘s Triangle