bzoj 3667: Rabin-Miller算法【Miller-Rabin】
Miller-Rabin模板
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
long long T,n,mx;
long long mul(long long a,long long b,long long mod)
{
	long long nw=a*b-(long long)((long double)a/mod*b+1e-8)*mod;
	return nw<0?nw+mod:nw;
}
long long gcd(long long a,long long b)
{
	return !b?a:gcd(b,a%b);
}
long long ksm(long long a,long long b,long long mod)
{
	long long r=1;
	a%=mod;
	while(b)
	{
		if(b&1)
			r=mul(r,a,mod);
		a=mul(a,a,mod);
		b>>=1;
	}
	return r;
}
bool ok(long long a,long long n,long long r,long long s)
{
	long long ans=ksm(a,r,n),p=ans;
	for(int i=1;i<=s;i++)
	{
		ans=mul(ans,ans,n);
		if(ans==1&&p!=1&&p!=n-1)
			return 1;
		p=ans;
	}
	return ans!=1;
}
bool mr(long long n)
{
	if(n<=1)
		return 0;
	if(n==2)
		return 1;
	if(n%2==0)
		return 0;
	long long r=n-1,s=0;
	while(r%2==0)
		r/=2,s++;
	for(int i=0;i<10;i++)
		if(ok(rand()%(n-1)+1,n,r,s))
			return 0;
	return 1;
}
long long clc(long long n,long long c)
{
	long long k=2,x=rand()%n,y=x,p=1;
	for(int i=1;p==1;i++)
	{
		x=(mul(x,x,n)+c)%n;
		p=gcd(n,abs(x-y));
		if(i==k)
			y=x,k*=2;
	}
	return p;
}
void wk(long long n)
{
	if(n==1)
		return;
	if(mr(n))
	{
		mx=max(mx,n);
		return;
	}
	long long x=n;
	while(x==n)
		x=clc(n,rand()%(n-1)+1);
	wk(x);
	wk(n/x);
}
int main()
{
	scanf("%lld",&T);
	while(T--)
	{
		scanf("%lld",&n);
		mx=0;
		wk(n);
		if(mx==n)
			puts("Prime");
		else
			printf("%lld\n",mx);
	}
	return 0;
}
												
											bzoj 3667: Rabin-Miller算法【Miller-Rabin】的更多相关文章
- Pollard rho算法+Miller Rabin算法 BZOJ 3668 Rabin-Miller算法
		
BZOJ 3667: Rabin-Miller算法 Time Limit: 60 Sec Memory Limit: 512 MBSubmit: 1044 Solved: 322[Submit][ ...
 - 非对称加密RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等。使用最广泛的是RSA算法
		
非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey).公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密:如果用私 ...
 - 【刷题】BZOJ 3667 Rabin-Miller算法
		
Input 第一行:CAS,代表数据组数(不大于350),以下CAS行,每行一个数字,保证在64位长整形范围内,并且没有负数.你需要对于每个数字:第一,检验是否是质数,是质数就输出Prime 第二,如 ...
 - BZOJ.3667.Rabin-Miller算法(MillerRabin PollardRho)
		
题目链接 Pollard_Rho:http://blog.csdn.net/thy_asdf/article/details/51347390 #include<cstdio> #incl ...
 - bzoj 3667  Rabin-Miller算法
		
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #i ...
 - BZOJ 3667: Rabin-Miller算法 (Pollard-Rho 模板)
		
说实话,我知道每一步都干啥,但我完全不知道为啥这么做,也不知道为什么是正确的,反正会用就行了~ #include <cmath> #include <cstdio> #incl ...
 - bzoj 2038 莫队算法
		
莫队算法,具体的可以看10年莫涛的论文. 大题思路就是假设对于区间l,r我们有了一个答案,那么对于区间l,r+1,我们 可以暴力的转移一个答案,那么对于区间l1,r1和区间l2,r2,需要暴力处理 的 ...
 - BZOJ 3571 画框 KM算法 最小乘积最大权匹配
		
题意 有n个画框和n幅画.若第i幅画和第j个画框配对,则有平凡度Aij和违和度Bij,一种配对方案的总体不和谐度为∑Aij*∑Bij.求通过搭配能得到的最小不和谐度是多少. n <= 70. 分 ...
 - BZOJ  3667 Pollard-rho &Miller-Rabin
		
论O(1)快速乘和O(logn)快速乘的差距-. //By SiriusRen #include <cstdio> #include <algorithm> using nam ...
 
随机推荐
- 嵌入式学习笔记(综合提高篇 第二章) -- FreeRTOS的移植和应用
			
1.1 资料准备和分析 上章节通过实现双机通讯,了解如何设计和实现自定义协议,不过对于嵌入式系统来说,当然不仅仅包含协议,还有其它很多需要深入学习了解的知识,下面将列出我在工作和学习上遇到的嵌入 ...
 - 6. IO复用:select 和 poll
			
select #include <sys/select.h> #include <sys/time.h> int select(int maxfdp1, fd_set *rea ...
 - 键盘HOOK显示按键信息
			
GetKeyNameText(MapVirtualKey(iKeyValue,0)<<16));//iKeyValue 的值为 VK_ESCAPE 等 LRESULT CALLBACK L ...
 - Python 006- python socket编程详细介绍
			
转自https://blog.csdn.net/rebelqsp/article/details/22109925 Python 提供了两个基本的 socket 模块. 第一个是 Socket,它提供 ...
 - Andriod Atom x86模拟器启动报错。
			
用Inter Atom模式的Android模拟器启动报一下错误: Starting emulator for AVD 'new' emulator: ERROR: x86 emulation curr ...
 - 该项目不在c:\ 请确认该项目的位置
			
该项目不在c:\ 请确认该项目的位置 - CSDN博客https://blog.csdn.net/feilong1lantern/article/details/50388414 在删除不掉的文件夹目 ...
 - Netty实现时间服务演示样例
			
相关知识点: [1] ChannelGroup是一个容纳打开的通道实例的线程安全的集合,方便我们统一施加操作.所以在使用的过程中能够将一些相关的Channel归类为一个有意义的集合.关闭的通道会自己主 ...
 - 20170225-第三件事:FR0002测试
			
第三件事:FR0002测试 MATNR WERKS BERID 800000217 I010 问题,上for all entrys… 1 ...
 - vue中引入字体文件
			
在用vue来写一官网的时候,想引入外部字体文件,毕竟总感觉他自己的字体有点难看,在这里记录下 1.先下载字体文件所需的.ttf文件 我这里想引入的是华文行楷字体 百度后下载了一个3M多的ttf文件 2 ...
 - poj  1860 Currency Exchange  解题报告
			
题目链接:http://poj.org/problem?id=1860 题目意思:给出 N 种 currency, M种兑换方式,Nick 拥有的的currency 编号S 以及他的具体的curren ...