抄别人的

#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. ArrayList如何实现线程安全

    一:使用synchronized关键字,这个大家应该都很熟悉了,不解释了: 二:使用Collections.synchronizedList();使用方法如下: 假如你创建的代码如下:List< ...

  2. AC日记——质因数分解 1.5 43

    43:质因数分解 总时间限制:  1000ms 内存限制:  65536kB 描述 已知正整数 n 是两个不同的质数的乘积,试求出较大的那个质数. 输入 输入只有一行,包含一个正整数 n. 对于60% ...

  3. C# 事件编程在游戏开发的应用

    2D碰撞检测:http://wenku.baidu.com/view/45544cfcfab069dc50220145.html 1.Action System.Action 等于快捷创建一个委托 2 ...

  4. SpringMVC讲解

    2.1.Spring Web MVC是什么 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职 ...

  5. noj[1581] 筷子

    题目描述 A先生有很多双筷子.确切的说应该是很多根,因为筷子的长度不一,很难判断出哪两根是一双的.这天,A先生家里来了K个客人,A先生留下他们吃晚饭.加上A先生,A夫人和他们的孩子小A,共K+3个人. ...

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

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

  7. 用django实现一个微信图灵机器人

    微信的post请求格式是xml,所以django需要做的就是将xml请求解析出来,把content发送到图灵机器人接口, 接口返回的json数据把主要内容给解析出来,然后重新封装成xml返回给微信客户 ...

  8. jquery两个滚动条样式

    jquery两个滚动条样式 点击下载

  9. github上写blog

    http://www.elbow95.me/blog/My-First-Blog-Essay.html 阮一峰的: http://www.ruanyifeng.com/blog/2012/08/blo ...

  10. Java 集合系列12之 TreeMap详细介绍(源码解析)和使用示例

    概要 这一章,我们对TreeMap进行学习.我们先对TreeMap有个整体认识,然后再学习它的源码,最后再通过实例来学会使用TreeMap.内容包括:第1部分 TreeMap介绍第2部分 TreeMa ...