抄别人的

#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. BZOJ2763[JLOI2011]飞行路线 [分层图最短路]

    2763: [JLOI2011]飞行路线 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2523  Solved: 946[Submit][Statu ...

  2. Vijos1680距离/openjudge2988计算字符串的距离[DP]

    描述 设有字符串X,我们称在X的头尾及中间插入任意多个空格后构成的新字符串为X的扩展串,如字符串X为”abcbcd”,则字符串“abcb_c_”,“_a_bcbcd_”和“abcb_c_”都是X的扩展 ...

  3. qau-国庆七天乐——B

      B - Bull Math   Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu Sub ...

  4. [No00000F]Excel快捷键大全 Excel2013/2010/2007/2003常用快捷键大全

    一个软件最大的用处是提高工作效率,衡量一个软件的好坏,除了是否出名之外,最主就是能否让一个新手更快的学会这个软件和提高工作速度.就拿Excel表格来说吧,平常办公中我们经常会用它来制作表格,统计数据或 ...

  5. linux下打开txt显示乱码的解决方法

    Linux打开txt文件乱码的解决方法   Linux显示在Windows编辑过的中文就会显示乱码是由于两个操作系统使用的编码不同所致.Linux下使用的编码是utf8,而Windows使用的是gb1 ...

  6. poj2676 Sudoku

    Sudoku Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 17953   Accepted: 8688   Special ...

  7. FiveChess笔记

    //为0,表示该位置没有棋子:1表示该位置下过黑子:2白子 int[][] allChess = new int[19][19];//同时还通过下标记录了棋子的相对位置 1.对话框: 确认对话框(0是 ...

  8. CF#345 (Div1)

    论蒟蒻如何被cf虐 以下是身败名裂后的题解菌=========== Div1 A.Watchmen 有n个点,每个点有一个坐标.求曼哈顿距离=欧几里得距离的点对数量. 只需要统计x或y一样的点对数量. ...

  9. C#输出log信息

    在写程序的过程中,有时候我们需要添加一些log信息,这个时候,可以采用下面的方法来实现. public static void WriteLog(string ExtraMsg, Exception ...

  10. 未能正确加载包“Microsoft.Data.Entity.Design.Package.MicrosoftDataEntityDesignPackage

    本文出处:http://blog.sina.com.cn/s/blog_6fe3efa301016i64.html vs 2005 ,vs 2008, vs 2010,安装后有时出现这个错误(我的机器 ...