大素数测试 求因子 poj 1811
抄别人的
#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的更多相关文章
- Miller_Rabbin大素数测试
伪素数: 如果存在和n互素的正整数a满足a^(n-1)≡1(mod n),则n是基于a的伪素数. 是伪素数但不是素数的个数是非常非常少的,所以如果一个数是伪素数,那么他几乎是素数. Miller_Ra ...
- HDU 4910 Problem about GCD 找规律+大素数判断+分解因子
Problem about GCD Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- Miller-Rabin大素数测试模板
根据费马小定理: 对于素数n,a(0<a<n),a^(n-1)=1(mod n) 如果对于一个<n的正整数a,a^(n-1)!=1(mod n),则n必不是素数. 然后就可以随机生成 ...
- 【算法编程】基于Miller-Rabin的大素数测试
基本原理: 费尔马小定理:如果p是一个素数,且0<a<p,则a^(p-1)%p=1. 利用费尔马小定理,对于给定的整数n,可以设计素数判定算法,通过计算d=a^(n-1)%n ...
- 大素数测试的Miller-Rabin算法
Miller-Rabin算法本质上是一种概率算法,存在误判的可能性,但是出错的概率非常小.出错的概率到底是多少,存在严格的理论推导. 一.费马小定理 假如p是质数,且gcd(a,p)=1,那么 a(p ...
- Miller Rabin 大素数测试
PS:本人第一次写随笔,写的不好请见谅. 接触MillerRabin算法大概是一年前,看到这个算法首先得为它的神奇之处大为赞叹,竟然可以通过几次随机数据的猜测就能判断出这数是否是素数,虽然说是有误差率 ...
- hdu 6169 Senior PanⅡ Miller_Rabin素数测试+容斥
Senior PanⅡ Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others) Pr ...
- 数论 - Miller_Rabin素数测试 + pollard_rho算法分解质因数 ---- poj 1811 : Prime Test
Prime Test Time Limit: 6000MS Memory Limit: 65536K Total Submissions: 29046 Accepted: 7342 Case ...
- poj 1811 Prime Test 大数素数测试+大数因子分解
Prime Test Time Limit: 6000MS Memory Limit: 65536K Total Submissions: 27129 Accepted: 6713 Case ...
随机推荐
- HMAC算法AS3版
http://www.cnblogs.com/appleseed/archive/2008/09/17/1292232.html
- junit 测试及assert的扩张
@Testpublic void method() 测试注释指示该公共无效方法它所附着可以作为一个测试用例. @Beforepublic void method() Before注释表示,该方法必须在 ...
- PHP从数据库导出EXCEL文件
参考博客链接:http://www.cnblogs.com/huangcong/p/3687665.html 我的程序代码 原生导出Excel文件 <?phpheader('Content-ty ...
- Android驱动入门-LED--测试APP编写③
硬件平台: FriendlyARM Tiny4412 Cortex-A9 操作系统: UBUNTU 14.04 LTS 时间:2016-09-24 10:47:03 在Android Studio中 ...
- css实现省略号
样式: {width: 160px; overflow: hidden; text-overflow:ellipsis; white-space: nowrap;} 说明: white-space: ...
- IntelliJ IDEA 编译maven项目以及运行测试前编译项目
Maven编译及命令行输出 右侧Maven Projects, 打开, 选取某个Project打开至Lifecycle/package 或其他任何一个lifecycle选项, 在上面右键Run Mav ...
- 单机多实例Tomcat部署
单机单用户基础上, 如何运行多个tomcat实例. 首先是tomcat的目录结构 bin – 包含所有运行tomcat的二进制和脚本文件 lib – 包含tomcat使用的所有共享库 c ...
- 交叉验证 Cross validation
来源:CSDN: boat_lee 简单交叉验证 hold-out cross validation 从全部训练数据S中随机选择s个样例作为训练集training set,剩余的作为测试集testin ...
- GLM in SPM
主要记一句话: SPM的GLM模型中的β,指的是相应regressor对最后测量得到的信号所产生的效应(effect). 后续的假设检验过程实际上都是对各个regressor的β向量进行的. The ...
- Codevs 1860 最大数 string大法好,STL万岁。。
题目描述 Description 设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数. 输入描述 Input Description 第一行一个正整数n. 第二行n个正整数,空格隔开 ...