poj1181 大数分解
- //Accepted 164 KB 422 ms
- //类似poj2429 大数分解
- #include <cstdio>
- #include <cstring>
- #include <ctime>
- #include <time.h>
- #include <iostream>
- #include <algorithm>
- using namespace std;
- ;
- __int64 gcd(__int64 a,__int64 b)
- {
- ) return a;
- return gcd(b,a%b);
- }
- __int64 mult_mod(__int64 a,__int64 b,__int64 p)
- {
- __int64 res=,temp=a%p;
- while (b)
- {
- )
- {
- res+=temp;
- if (res>=p) res-=p;
- }
- temp<<=;
- if (temp>=p) temp-=p;
- b>>=;
- }
- return res;
- }
- __int64 exp_mod(__int64 a,__int64 b,__int64 p)
- {
- __int64 res=,exp=a%p;
- )
- {
- )
- res=mult_mod(res,exp,p);
- exp=mult_mod(exp,exp,p);
- b>>=;
- }
- return res;
- }
- bool miller_rabin(__int64 n,__int64 times)
- {
- ) return true;
- || !(n&)) return false;
- __int64 a,u=n-,x,y;
- ;
- ==)
- {
- t++;
- u/=;
- }
- srand(time());
- ;i<times;i++)
- {
- a=rand()%(n-)+;
- x=exp_mod(a,u,n);
- ;j<t;j++)
- {
- y=mult_mod(x,x,n);
- && x!= && x!=n-)
- return false;
- x=y;
- }
- ) return false;
- }
- return true;
- }
- __int64 pollar_rho(__int64 n,int c)
- {
- __int64 x,y,d,i=,k=;
- srand(time());
- x=rand()%(n-)+;
- y=x;
- while (true)
- {
- i++;
- x=(mult_mod(x,x,n)+c)%n;
- d=gcd(y-x,n);
- && d<n) return d;
- if (y==x) return n;
- if (i==k)
- {
- y=x;
- k<<=;
- }
- }
- }
- __int64 min_ans;
- void findMinFactor(__int64 n,int c)
- {
- ) return ;
- ))
- {
- if (n<min_ans) min_ans=n;
- return ;
- }
- __int64 p=n;
- while (p>=n)
- p=pollar_rho(p,c--);
- findMinFactor(p,c);
- findMinFactor(n/p,c);
- }
- int main()
- {
- int T;
- scanf("%d",&T);
- while (T--)
- {
- __int64 n;
- scanf("%I64d",&n);
- )==true)
- {
- printf("Prime\n");
- }
- else
- {
- min_ans=inf;
- findMinFactor(n,);
- printf("%I64d\n",min_ans);
- }
- }
- ;
- }
poj1181 大数分解的更多相关文章
- HDU4344(大数分解)
题目:Mark the Rope 题意就是给一个数,然后求这个数的所有因子中组成的最大的一个子集,其中1和本身除外,使得在这个子集中元素两两互素,求最大子集的元素个 数,并且求出和最大的值. 找规律就 ...
- poj 1811 随机素数和大数分解(模板)
Sample Input 2 5 10 Sample Output Prime 2 模板学习: 判断是否是素数,数据很大,所以用miller,不是的话再用pollard rho分解 miller : ...
- Pollard_Rho大数分解模板题 pku-2191
题意:给你一个数n, 定义m=2k-1, {k|1<=k<=n},并且 k为素数; 当m为合数时,求分解为质因数,输出格式如下:47 * 178481 = 8388607 = ( ...
- poj 1811 大数分解
模板 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<time.h> ...
- poj 2429 Pollard_rho大数分解
先对lcm/gcd进行分解,问题转变为从因子中选出一些数相乘,剩下的数也相乘,要求和最小. 这里能够直接搜索,注意一个问题,因为同样因子不能分配给两边(会改变gcd)所以能够将同样因子合并,这种话,搜 ...
- 模板题Pollard_Rho大数分解 A - Prime Test POJ - 1811
题意:是素数就输出Prime,不是就输出最小因子. #include <cstdio> #include<time.h> #include <algorithm> ...
- 【模板】SPOJ FACT0 大数分解 miller-rabin & pollard-rho
http://www.spoj.com/problems/FACT0/en/ 给一个小于1e15的数,将他分解. miller-rabin & pollard-rho模板 #include & ...
- 数学--数论---P4718 Pollard-Rho算法 大数分解
P4718 [模板]Pollard-Rho算法 题目描述 MillerRabin算法是一种高效的质数判断方法.虽然是一种不确定的质数判断法,但是在选择多种底数的情况下,正确率是可以接受的.Pollar ...
- poj2429 大数分解+dfs
//Accepted 172 KB 172 ms //该程序为随机性算法,运行时间不定 #include <cstdio> #include <cstring> #includ ...
随机推荐
- Linux源码安装mysql步骤
创建文件夹: mkdir /usr/local/webserver 安装必要依赖包 yum -y install gcc gcc-c++ make ncurses-devel安装cmake ...
- Spring框架的反序列化远程代码执行漏洞分析(转)
欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...
- Cmd Markdown 简明语法手册
『Cmd 技术渲染的沙箱页面,点击此处编写自己的文档』 Cmd Markdown 简明语法手册 标签: Cmd-Markdown 1. 斜体和粗体 使用 * 和 ** 表示斜体和粗体. 示例: 这是 ...
- JavaScript学习笔记(十二) 回调模式(Callback Pattern)
函数就是对象,所以他们可以作为一个参数传递给其它函数: 当你将introduceBugs()作为一个参数传递给writeCode(),然后在某个时间点,writeCode()有可能执行(调用)intr ...
- python 练习 22
Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false. Python 编程中 if 语句用于控制程序的执行,基本形式为: if 判断条件: 执行语句…… el ...
- Ubuntu 安装 Redis
1. 下载并安装 redis 2.6.16版 sudo mkdir /usr/local/src/Redis cd /usr/local/src/Redis sudo wget http://down ...
- java多线程的常用方法(以及注意事项)
/* * 线程的常用方法 * 1.start(); * 2.run(); * 3.sleep(int millsecond); * 4.isAlive(); -->判断线程是否还在运行 * 5. ...
- IOS开发设计思路
我在做 iOS 开发的时候,发现自己在写程序的时候,常常处于两种状态的切换,我把这两种状态称为软件开发的上帝模式与农民模式.我先给大家介绍一下这两种模式的特点. 上帝模式 处于上帝模式时,我需要构思整 ...
- centos修改文件及文件夹权限
查看文件权限的语句: 在终端输入:ls -l xxx.xxx (xxx.xxx是文件名) 那么就会出现相类似的信息,主要都是这些:-rw-rw-r-- 一共有10位数 其中: 最前面那个 - 代表的是 ...
- JSON 换行、JSON \r\n、怎么处理 ?(转载)
参考地址: http://www.cnblogs.com/mamingbo/archive/2010/11/27/1889583.html 在最后json的字符串上:.Replace("\r ...