抄别人的

#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. GNU make规则的命令④书写命令

    命令回显 通常, make 在执行命令行之前会把要执行的命令行输出到标准输出设备.我们称之为"回显",就好像我们在 shell 环境下输入命令执行时一样. 如果规则的命令行以字符& ...

  2. [No00001E]不出国,学口语-出国口语自然好?才怪咧!

  3. 代码管理工具之git的学习

    1.代码管理工具git的学习  http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html 2.github的使用帮助   https:// ...

  4. mysql下mysqladmin日常管理命令总结

    mysqladmin 工具的使用格式:mysqladmin [option] command [command option] command ......参数选项:-c number 自动运行次数统 ...

  5. 布局 - layout

    示例 <div id="cc" class="easyui-layout" style="width:600px;height:400px;&q ...

  6. BZOJ 1036: [ZJOI2008]树的统计Count

    1036: [ZJOI2008]树的统计Count Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 14354  Solved: 5802 [Subm ...

  7. GIT常用命令备忘

    Git配置 git config --global user.name "storm" git config --global user.email "stormzhan ...

  8. Windows 8.1 新增控件之 Flyout

    本篇为大家介绍Flyout 控件,Flyout 属于一种轻量级交互控件,可以支持信息提示或用户交互.与传统Dialog 控件不同的是Flyout 控件可通过直接点击对话框外部区域忽略. Flyout ...

  9. Android -- 桌面悬浮,QQ管家火箭实现

    续上一篇博客<Android -- 桌面悬浮,仿360>,传送门:http://www.cnblogs.com/yydcdut/p/3909888.html,在此代码上继续添加实现. 比起 ...

  10. 实现Linux与Windows下一致的命令行

    这其实是个非常简单的东西. 我们会写一些命令行的工具,一般跨平台的话,会用python或者perl写,比如叫foo.py,然后在Windows和Linux下调用这个脚本: Linux: foo.py ...