【题目大意】

若n是素数,输出“Prime”,否则输出n的最小素因子,(n<=2^54)

【题解】

和bzoj3667差不多,知识这道题没那么坑。

直接上Pollord_Rho和Rabin_Miller就行了。

 /*************
POJ 1811
by chty
2016.11.7
*************/
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<ctime>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long ll;
const ll INF=1000000000000000000LL;
const ll prime[]={,,,,,,,,};
ll T,minn;
inline ll read()
{
ll x=,f=; char ch=getchar();
while(!isdigit(ch)) {if(ch=='-') f=-; ch=getchar();}
while(isdigit(ch)) {x=x*+ch-''; ch=getchar();}
return x*f;
}
ll gcd(ll a,ll b) {return !b?a:gcd(b,a%b);}
ll mul(ll x,ll y,ll mod) {return ((x*y-(ll)(((long double)x*y+0.5)/mod)*mod)%mod+mod)%mod;}
ll fast(ll a,ll b,ll mod) {ll sum=;for(;b;b>>=,a=mul(a,a,mod))if(b&)sum=mul(sum,a,mod);return sum;}
bool Rabin_Miller(ll p,ll a)
{
if(p==) return ;
if(!(p&)||p==) return ;
ll d=p-;
while(!(d&)) d>>=;
ll m=fast(a,d,p);
if(m==) return ;
for(;d<p;d<<=,m=mul(m,m,p)) if(m==p-) return ;
return ;
}
bool isprime(ll x)
{
for(ll i=;i<;i++)
{
if(prime[i]==x) return ;
if(!Rabin_Miller(x,prime[i])) return ;
}
return ;
}
void Pollord_Rho(ll x)
{
if(isprime(x)) {minn=min(minn,x); return;}
ll c=;
while()
{
ll x1(),x2(),i(),k();
while()
{
x1=(mul(x1,x1,x)+c)%x;
ll d=gcd(x1>x2?x1-x2:x2-x1,x);
if(d>&&d<x)
{
Pollord_Rho(d);
Pollord_Rho(x/d);
return;
}
if(x1==x2) break;
if(++i==k) x2=x1,k<<=;
}
c++;
}
}
void solve(ll x)
{
if(isprime(x)) {puts("Prime"); return;}
minn=INF;
Pollord_Rho(x);
printf("%lld\n",minn);
}
int main()
{
freopen("cin.in","r",stdin);
freopen("cout.out","w",stdout);
T=read();
while(T--){ll x=read();solve(x);}
return ;
}

【POJ1811】Prime Test的更多相关文章

  1. 【CF912E】Prime Game(meet in the middle)

    [CF912E]Prime Game(meet in the middle) 题面 CF 懒得翻译了. 题解 一眼题. \(meet\ in\ the\ middle\)分别爆算所有可行的两组质数,然 ...

  2. 【POJ1811】【miller_rabin + pollard rho + 快速乘】Prime Test

    Description Given a big integer number, you are required to find out whether it's a prime number. In ...

  3. 【数论】Prime Time UVA - 10200 大素数 Miller Robin 模板

    题意:验证1~10000 的数 n^n+n+41 中素数的个数.每个询问给出a,b  求区间[a,b]中质数出现的比例,保留两位 题解:质数会爆到1e8 所以用miller robin , 另外一个优 ...

  4. 【Poj3126】【BNUOJ3245】Prime Path

    http://poj.org/problem?id=3126 https://www.bnuoj.com/v3/problem_show.php?pid=3245 题目鬼图 刚开始看到题目的图觉得这题 ...

  5. 【XSY2719】prime 莫比乌斯反演

    题目描述 设\(f(i)\)为\(i\)的不同的质因子个数,求\(\sum_{i=1}^n2^{f(i)}\) \(n\leq{10}^{12}\) 题解 考虑\(2^{f(i)}\)的意义:有\(f ...

  6. 【UVA10140】Prime Distance

    题目大意:求出一个给定区间 [l, r] 内相邻素数之间的最大距离和最小距离. 题解:由于 l, r 的范围太大,没法直接用筛法得出区间的素数.考虑筛出区间的素数等价于筛掉区间内的所有和数, 根据算术 ...

  7. 【搜索】 Prime Path

    #include<cstdio> #include<cstring> #include<cmath> #include<queue> #include& ...

  8. 【CodeChef】Prime Distance On Tree

    vjudge 给定一棵边长都是\(1\)的树,求有多少条路径长度为质数 树上路径自然是点分治去搞,但是发现要求是长度为质数,总不能对每一个质数都判断一遍吧 自然是不行的,这个东西显然是一个卷积,我们合 ...

  9. 【arc080F】Prime Flip

    Portal --> arc080_f Solution ​  这题的话..差分套路题(算吗?反正就是想到差分就很好想了qwq) ​​  (但是问题就是我不会这种套路啊qwq题解原话是:&quo ...

随机推荐

  1. WPF绘制简单常用的Path(转)

    写代码出身的我们经常需要使用一些简单 但是不是规则图形的Path 但限于美工功底有限 不知道怎么去画 下面我告诉大家一些简单的小技巧 用代码来画Path 个人还是比较喜欢用代码 因为数值控制的更精细 ...

  2. lapis 基本开发

    1. 生成项目代码 // 支持lua 以及 moonscript, 默认是moonscript 通过--lua 可以生成lua 的代码 lapis new --lua ├── app.lua ├── ...

  3. ibernate+Struts2环境如何使用jqGrid。

    因为公司项目需要,在Hibernate+Struts2的环境下,研究了一下如何使用jqGrid. 说实在的,Struts2+jqGrid不是一个很好的组合.因为jqGrid中很多功能,基本上都使用的是 ...

  4. php分页类 可直接调用

    <?php /** * 分页类 * @author xyy * 调用分页实例 $subPages=new SubPages(数据总条数);//实例化分页类 * //$subPages->s ...

  5. jq下拉插件,chosen

    Chosen 选项列表 <select data-placeholder="请选择" class="chosen-select" tabindex=&qu ...

  6. Hibernate学习9—检索策略

    本章,采用Class和Student     ——  1 对 多的关系: Student.java: package com.cy.model; public class Student { priv ...

  7. Java Scanner 类,获取用户输入的值

    Scanner 类使用步骤 1.导入java.util.Scanner import java.util.Scanner; 2.创建Scanner对象 Scanner scan = new Scann ...

  8. 第五章 用Helm部署Istio

    5.1 Istio Chart概述 Helm是目前Istio官方推荐的安装方式.还可以对输入值进行一些调整,完成对Istio的部分配置工作.Istio Chart是一个总分结构,其分级结构和设计结构是 ...

  9. 九 assign和subscribe

    1 subscribe:  自动安排分区, 通过group自动重新的负载均衡: 关于Group的实验: 如果auto commit = true, 重新启动进程,如果是同样的groupID,从上次co ...

  10. 在单板上使用WIFI网卡的固件问题

    (在单板上使用WIFI网卡的固件问题)(我的wifi网卡是RT3070) (一般买的网卡说是支持LINUX免驱的话,那么在/lib/firmware/ 下一定有相应的固件) 我将USB网卡接入UBUN ...