#include<iostream>
#include<cstdio>
#include<ctime>
#include<string.h>
#include<stdlib.h>
#define LL long long
using namespace std; const int S=20;//随机算法判定次数,S越大,判错概率越小
LL ans;
//给定一个数,判断是否是素数(常用long long大数)
LL mult_mod(LL a,LL b,LL mod) //(a*b)%c a,b,c<2^63
{
a%=mod;
b%=mod;
LL ans=0;
while(b)
{
if(b&1)
{
ans=ans+a;
if(ans>=mod)
ans=ans-mod;
}
a=a<<1;
if(a>=mod) a=a-mod;
b=b>>1;
}
return ans;
} LL pow_mod(LL a,LL b,LL mod) // a^b%mod
{
LL ans=1;
a=a%mod;
while(b)
{
if(b&1)
{
ans=mult_mod(ans,a,mod);
}
a=mult_mod(a,a,mod);
b=b>>1;
}
return ans;
} //以a为基,n-1=x*2^t a^(n-1)=1(mod n) 验证n是不是合数
//一定是合数返回true,不一定返回false bool check(LL a,LL n,LL x,LL t)
{
LL ret=pow_mod(a,x,n);
LL last=ret;
for(int i=1;i<=t;i++)
{
ret=mult_mod(ret,ret,n);
if(ret==1 && last!=1 && last!=n-1) return true;//合数
last=ret;
}
if(ret!=1) return true;
else return false;
} // Miller_Rabin()算法素数判定
//是素数返回true.(可能是伪素数,但概率极小)
//合数返回false; bool Miller_Rabin(long long n)
{
if(n<2)return false;
if(n==2) return true;
if( (n&1)==0) return false;//偶数
LL x=n-1;
LL t=0;
while( (x&1)==0 ) { x>>=1;t++;}
for(int i=0;i<S;i++)
{
LL a=rand()%(n-1)+1;//rand()需要stdlib.h头文件
if(check(a,n,x,t))
return false;//合数
}
return true;
}
void find(long long n,int c)
{
if(n==1)
return ;
if(Miller_Rabin(n))
{
//m[n]++;
ans=min(ans,n);
return ;
}
long long p=n;
while(p>=n)
p=pollard_rho(p,c--);
find(p,c);
find(n/p,c);
}
int main(){
int a;
scanf("%d",&a);
while(a--)
{
long long x;
scanf("%lld",&x);
if(Miller_Rabin(x))cout<<"prime"<<endl;
else{
find(x,12312);
cout<<ans<<endl;
}
}
}

  

最新文章

  1. 安装SqlServer的时候性能计数器注册表配置单元一致性失败的解决办法
  2. Golang gopath
  3. HTML5 Wijmo:控制 Wijmo Grid 插件的编辑模式
  4. 浅谈CLR
  5. Listview实现不同类型的布局
  6. bzoj3405:[Usaco2009 Open]Grazing2 移动牛棚
  7. MTU of IPV4 and IPV6
  8. bzoj1430
  9. hive中left/right join on连接中and与where的使用问题
  10. 第一节,初识OpenCV3-图像的读、写、显、格式转化等
  11. react router @4 和 vue路由 详解(八)vue路由守卫
  12. mariadb semi plugin遇到的坑
  13. Eclipse插件安装常见方法
  14. 软件工程第二次作业(One who wants to wear the crown, Bears the crown.)
  15. Jquery遍历筛选数组的几种方法和遍历解析json对象|Map()方法详解
  16. react-native react-navigation使用
  17. 定制UITabBar显示样式
  18. php 内存泄漏
  19. Nginx使用的php-fpm的两种进程管理方式及优化
  20. html中音频和视频

热门文章

  1. 比特币--私钥-&gt;公钥-&gt;钱包地址
  2. WebGL 踩坑系列-3
  3. POJ 3164——Command Network——————【最小树形图、固定根】
  4. 初次搭建spring boot 项目(实验楼-学习笔记)
  5. poj 3162 树DP+单调队列
  6. Spring课程 Spring入门篇 1-1Spring入门课程简介
  7. 【起航计划 026】2015 起航计划 Android APIDemo的魔鬼步伐 25 App-&gt;Notification-&gt;Status Bar 状态栏显示自定义的通知布局,省却声音、震动
  8. Linux读取NTFS类型数据盘
  9. 【js基础修炼之路】- 手把手教你实现bind
  10. express不是内部命令