#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<ctime>
#include<cmath>
#include<iostream>
using namespace std; #define LL long long
LL n;
#define maxs 80
LL fac[maxs],num[maxs],lf=;
LL mul(LL a,LL b,LL p)
{
LL tmp=a,ans=;
while (b) {if (b&) ans=(ans+tmp)%p;tmp=(tmp+tmp)%p;b>>=;}
return ans;
}
LL random(LL x) {return (LL)((double)rand()/RAND_MAX*(x-)+0.5);}
LL f(LL x,LL c,LL p) {return (mul(x,x,p)+c)%p;}
LL gcd(LL a,LL b) {if (a<b) return gcd(b,a);return b?gcd(b,a%b):a;}
LL play(LL x,LL c)
{
LL a=random(x-)+,b=f(a,c,x),i=,k=;
if (a==b) return x;
while (++i)
{
LL sig=gcd(fabs(a-b),x);
if (sig> && sig<x) return sig;
b=f(b,c,x);
if (a==b) return x;
if (i==k) a=b,k<<=;
}
}
LL pow_mod(LL a,LL b,LL p)
{
LL tmp=a,ans=;
while (b) {if (b&) ans=mul(ans,tmp,p);tmp=mul(tmp,tmp,p);b>>=;}
return ans;
}
bool is_prime(LL x)
{
LL num=x-,k=;while (!(num&)) num>>=,k++;
for (int i=;i<=;i++)
{
LL t=random(x-)+,jud=pow_mod(t,num,x),now=jud;
for (int j=;j<=k;j++)
{
jud=mul(jud,jud,x);
if (jud== && now!= && now!=x-) return ;
now=jud;
}
if (jud!=) return ;
}
return ;
}
void rho(LL x,LL c)
{
if (x==) return;
if (is_prime(x)) {fac[++lf]=x;return;}
LL p=x,tmp=c;
while (p==x) p=play(x,tmp--);
rho(p,c);rho(x/p,c);
}
int main()
{
srand(time(NULL));
scanf("%lld",&n);
memset(fac,,sizeof(fac));
rho(n,);sort(fac+,fac++lf);num[]=;LL nlf=;
for (int i=;i<=lf;i++)
if (fac[i-]==fac[i]) num[nlf]++;
else num[++nlf]=,fac[nlf]=fac[i];
lf=nlf;
for (int i=;i<lf;i++) printf("%lld^%lld*",fac[i],num[i]);printf("%lld^%lld\n",fac[lf],num[lf]);
return ;
}

Pollard rho模板的更多相关文章

  1. POJ 1811 Prime Test (Pollard rho 大整数分解)

    题意:给出一个N,若N为素数,输出Prime.若为合数,输出最小的素因子.思路:Pollard rho大整数分解,模板题 #include <iostream> #include < ...

  2. Miller-Rabin 素性测试 与 Pollard Rho 大整数分解

    \(\\\) Miller-Rabin 素性测试 考虑如何检验一个数字是否为素数. 经典的试除法复杂度 \(O(\sqrt N)\) 适用于询问 \(N\le 10^{16}\) 的时候. 如果我们要 ...

  3. Pollard Rho算法浅谈

    Pollard Rho介绍 Pollard Rho算法是Pollard[1]在1975年[2]发明的一种将大整数因数分解的算法 其中Pollard来源于发明者Pollard的姓,Rho则来自内部伪随机 ...

  4. Miller Rabin素数检测与Pollard Rho算法

    一些前置知识可以看一下我的联赛前数学知识 如何判断一个数是否为质数 方法一:试除法 扫描\(2\sim \sqrt{n}\)之间的所有整数,依次检查它们能否整除\(n\),若都不能整除,则\(n\)是 ...

  5. 整数(质因子)分解(Pollard rho大整数分解)

    整数分解,又称质因子分解.在数学中,整数分解问题是指:给出一个正整数,将其写成几个素数的乘积的形式. (每个合数都可以写成几个质数相乘的形式,这几个质数就都叫做这个合数的质因数.) .试除法(适用于范 ...

  6. Pollard Rho因子分解算法

    有一类问题,要求我们将一个正整数x,分解为两个非平凡因子(平凡因子为1与x)的乘积x=ab. 显然我们需要先检测x是否为素数(如果是素数将无解),可以使用Miller-Rabin算法来进行测试. Po ...

  7. Pollard rho算法+Miller Rabin算法 BZOJ 3668 Rabin-Miller算法

    BZOJ 3667: Rabin-Miller算法 Time Limit: 60 Sec  Memory Limit: 512 MBSubmit: 1044  Solved: 322[Submit][ ...

  8. 初学Pollard Rho算法

    前言 \(Pollard\ Rho\)是一个著名的大数质因数分解算法,它的实现基于一个神奇的算法:\(MillerRabin\)素数测试(关于\(MillerRabin\),可以参考这篇博客:初学Mi ...

  9. 【Luogu】P4358密钥破解(Pollard Rho)

    题目链接 容易发现如果我们求出p和q这题就差不多快变成一个sb题了. 于是我们就用Pollard Rho算法进行大数分解. 至于这个算法的原理,emmm 其实也不是很清楚啦 #include<c ...

随机推荐

  1. java 自定义注解,并使用示例

    场景: 对需要校验  手机验证码和短信验证码的controller方法添加 自定义的注解 @CheckType 1. 定义注解 /** * 需要短信.验证码验证方法上的注解 * date: 2018年 ...

  2. 从 fn_dbLog 解析操作日志(补充update)

    过去经常听到SQL server 日志,可是在提供的界面上看到的Log不是我们想要的,我们想窥探具体的数据操作日志.专业恢复追踪数据库操作日志的软件:ApexSQLLog,偶然发现SQL Server ...

  3. Python调用Java代码部署及初步使用

    Python调用Java代码部署: jpype下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#jpype 下载的时候需要使用Chrome浏览器进行下载 ...

  4. 如何正确理解和使用 Activity的4种启动模式

    关于Activity启动模式的文章已经很多,但有的文章写得过于简单,有的则过于注重细节,本文想取一个折中,只关注最重要和最常用的概念,原理和使用方法,便于读者正确应用. Activity的启动模式有4 ...

  5. Oracle Storage in Action : 删除物理数据文件

    ALTER TABLESPACE XH_DM DROP DATAFILE 'F:\DEV\ORACLE-DATA\ORCL\XH_DM_1.DBF'; SQL> ALTER TABLESPACE ...

  6. JDBC的fetchsize和maxrows

    在我们的项目开发中,可能有把SQL查询的结果保存到CSV然后提供下载的功能.当查询的结果集相当大的时候,很容易报内存不足错误(outofmemory).那该怎么解决这种情况的内存不足错误呢? 其实在J ...

  7. 四次元新浪微博客户端Android源码

    四次元新浪微博客户端Android源码 源码下载:http://code.662p.com/list/11_1.html [/td][td] [/td][td] [/td][td] 详细说明:http ...

  8. MongoDB最简单的入门教程之二 使用nodejs访问MongoDB

    在前一篇教程 MongoDB最简单的入门教程之一 环境搭建 里,我们已经完成了MongoDB的环境搭建. 在localhost:27017的服务器上,在数据库admin下面创建了一个名为person的 ...

  9. Android(java)学习笔记176: 远程服务的应用场景(移动支付案例)

    一. 移动支付:       用户需要在移动终端提交账号.密码以及金额等数据 到 远端服务器.然后远端服务器匹配这些信息,进行逻辑判断,进而完成交易,返回交易成功或失败的信息给移动终端.用户提交账号. ...

  10. dircolors - 设置‘ls'显示结果的颜色

    SYNOPSIS[总览] dircolors [-b] [--sh] [--bourne-shell] [-c] [--csh] [--c-shell] [-p] [--print-database] ...