抄别人的

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<stdlib.h>
#include<time.h>
#include<map> using namespace std;
typedef long long ll;
map<ll,int>m1; ll random(ll n)
{
return ((double)rand()/RAND_MAX*n+0.5);
} ll mult(ll a,ll b,ll c)
{
ll ans=;
a=a%c;
while(b>)
{
if(b&)
ans=(ans+a)%c;
a=(a+a)%c;
b=b>>;
}
return ans;
}
ll quick(ll a,ll b,ll c)
{
ll ans=;
a=a%c;
while(b>)
{
if(b&)
ans=mult(ans,a,c);
a=mult(a,a,c);
b=b>>;
}
return ans;
}
#define TIMES 10
bool witness(ll a,ll n)
{
ll d =n-;
while(!(d&))
d>>=;
ll t=quick(a,d,n);
while(d!=n-&&t!=&&t!=n-)
{
t=mult(t,t,n);
d<<=;
}
return t==n-||d&; }
bool Miller_Rabin(ll n)
{
if(n==)
return ;
if(n<||!(n&))
return ;
for(int i=;i<=TIMES;i++)
{
ll a=random(n-)+;
if(!witness(a,n))
return ;
}
return ; }
ll gcd(ll a,ll b)
{
return b?gcd(b,a%b):a;
}
ll pollard_rho(ll n,ll c)
{
ll x,y,d,i=,k=;
x=random(n-)+;
y=x;
while()
{
i++;
x=(mult(x,x,n)+c)%n;
d=gcd(y-x,n);
if(d>&&d<n)
return d;
if(y==x)
return n;
if(i==k)
{
y=x;
k<<=;
}
} }
void find1(ll n,ll c)
{
if(n==)
return ;
if(Miller_Rabin(n))
{
m1[n]++;
return ;
}
ll p=n;
while(p>=n)
p=pollard_rho(p,c--);
find1(p,c);
find1(n/p,c);
}
int main()
{
int t;
scanf("%d",&t); while(t--)
{
ll a;
scanf("%lld",&a);
m1.clear();
if(Miller_Rabin(a))
printf("Prime\n");
else
{
find1(a,);
map<ll,int>::iterator i=m1.begin();
printf("%lld\n",i->first);
}
} return ;
}

大素数测试 求因子 poj 1811的更多相关文章

  1. Miller_Rabbin大素数测试

    伪素数: 如果存在和n互素的正整数a满足a^(n-1)≡1(mod n),则n是基于a的伪素数. 是伪素数但不是素数的个数是非常非常少的,所以如果一个数是伪素数,那么他几乎是素数. Miller_Ra ...

  2. HDU 4910 Problem about GCD 找规律+大素数判断+分解因子

    Problem about GCD Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  3. Miller-Rabin大素数测试模板

    根据费马小定理: 对于素数n,a(0<a<n),a^(n-1)=1(mod n) 如果对于一个<n的正整数a,a^(n-1)!=1(mod n),则n必不是素数. 然后就可以随机生成 ...

  4. 【算法编程】基于Miller-Rabin的大素数测试

    基本原理: 费尔马小定理:如果p是一个素数,且0<a<p,则a^(p-1)%p=1.        利用费尔马小定理,对于给定的整数n,可以设计素数判定算法,通过计算d=a^(n-1)%n ...

  5. 大素数测试的Miller-Rabin算法

    Miller-Rabin算法本质上是一种概率算法,存在误判的可能性,但是出错的概率非常小.出错的概率到底是多少,存在严格的理论推导. 一.费马小定理 假如p是质数,且gcd(a,p)=1,那么 a(p ...

  6. Miller Rabin 大素数测试

    PS:本人第一次写随笔,写的不好请见谅. 接触MillerRabin算法大概是一年前,看到这个算法首先得为它的神奇之处大为赞叹,竟然可以通过几次随机数据的猜测就能判断出这数是否是素数,虽然说是有误差率 ...

  7. hdu 6169 Senior PanⅡ Miller_Rabin素数测试+容斥

    Senior PanⅡ Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others) Pr ...

  8. 数论 - Miller_Rabin素数测试 + pollard_rho算法分解质因数 ---- poj 1811 : Prime Test

    Prime Test Time Limit: 6000MS   Memory Limit: 65536K Total Submissions: 29046   Accepted: 7342 Case ...

  9. poj 1811 Prime Test 大数素数测试+大数因子分解

    Prime Test Time Limit: 6000MS   Memory Limit: 65536K Total Submissions: 27129   Accepted: 6713 Case ...

随机推荐

  1. POJ2955Brackets[区间DP]

    Brackets Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6585   Accepted: 3534 Descript ...

  2. NOIP模拟赛 行走

    题目描述 “我有个愿望,我希望走到你身边.” 这是个奇异的世界,世界上的n-1条路联结起来形成一棵树,每条路有一个对应的权值ci. 现在我会给出q组询问或操作. 每次询问我会从一个x点走到y点,初始在 ...

  3. poj1573 Robot Motion

    Robot Motion Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 12507   Accepted: 6070 Des ...

  4. jquery无缝间歇向上滚动(间断滚动)

    jquery无缝间歇向上滚动 JS部份 $(function(){ var $this = $(".renav"); var scrollTimer; $this.hover(fu ...

  5. 小心 CSS3 Transform 引起的 z-index "失效"

    https://www.douban.com/note/343402554/ http://www.jb51.net/css/255811.html 最后我直接removeClass;把transfo ...

  6. iOS十六进制和字符串的相互转换

    转换代码,崩溃日志有些是十六进制 NSString *dictString = [dict JSONFragment];//组合成的 dictString==={"content" ...

  7. 二叉树的遍历(递归,迭代,Morris遍历)

    二叉树的三种遍历方法: 先序,中序,后序,这三种遍历方式每一个都可以用递归,迭代,Morris三种形式实现,其中Morris效率最高,空间复杂度为O(1). 主要参考博客: 二叉树的遍历(递归,迭代, ...

  8. Spring Security笔记:自定义登录页

    以下内容参考了 http://www.mkyong.com/spring-security/spring-security-form-login-example/ 接上回,在前面的Hello Worl ...

  9. ReactNative真机运行指南

    ReactNative真机运行指南 注意在iOS设备上运行React Native应用需要一个Apple Developer account并且把你的设备注册为测试设备.本向导只包含React Nat ...

  10. ubuntu-12.10-server安装图形界面

    1.首先你需要确定你的源文件中 /etc/apt/sources.list 已经使用Universe和Multiverse库.然后使用下面的命令来进行更新源列表和安装图形桌面. sudo apt-ge ...