//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 大数分解的更多相关文章

  1. HDU4344(大数分解)

    题目:Mark the Rope 题意就是给一个数,然后求这个数的所有因子中组成的最大的一个子集,其中1和本身除外,使得在这个子集中元素两两互素,求最大子集的元素个 数,并且求出和最大的值. 找规律就 ...

  2. poj 1811 随机素数和大数分解(模板)

    Sample Input 2 5 10 Sample Output Prime 2 模板学习: 判断是否是素数,数据很大,所以用miller,不是的话再用pollard rho分解 miller : ...

  3. Pollard_Rho大数分解模板题 pku-2191

    题意:给你一个数n,  定义m=2k-1,   {k|1<=k<=n},并且 k为素数;  当m为合数时,求分解为质因数,输出格式如下:47 * 178481 = 8388607 = ( ...

  4. poj 1811 大数分解

    模板 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<time.h> ...

  5. poj 2429 Pollard_rho大数分解

    先对lcm/gcd进行分解,问题转变为从因子中选出一些数相乘,剩下的数也相乘,要求和最小. 这里能够直接搜索,注意一个问题,因为同样因子不能分配给两边(会改变gcd)所以能够将同样因子合并,这种话,搜 ...

  6. 模板题Pollard_Rho大数分解 A - Prime Test POJ - 1811

    题意:是素数就输出Prime,不是就输出最小因子. #include <cstdio> #include<time.h> #include <algorithm> ...

  7. 【模板】SPOJ FACT0 大数分解 miller-rabin & pollard-rho

    http://www.spoj.com/problems/FACT0/en/ 给一个小于1e15的数,将他分解. miller-rabin & pollard-rho模板 #include & ...

  8. 数学--数论---P4718 Pollard-Rho算法 大数分解

    P4718 [模板]Pollard-Rho算法 题目描述 MillerRabin算法是一种高效的质数判断方法.虽然是一种不确定的质数判断法,但是在选择多种底数的情况下,正确率是可以接受的.Pollar ...

  9. poj2429 大数分解+dfs

    //Accepted 172 KB 172 ms //该程序为随机性算法,运行时间不定 #include <cstdio> #include <cstring> #includ ...

随机推荐

  1. 一些简单css3效果的整理

    代码: html: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  2. ArcMap上发布地图服务前,“将图形转为要素的选项”时报“输出名称无效”错误

    发布ArcMap服务时,由于矢量图中包含“文本标注”. 发布矢量图服务时,报了一个“00017: 数据框中至少有一个包含图形的已启用注记组”的错误,如下图: 官网给出的解决办法如下:http://re ...

  3. 小而美的js程序

    1.获取数字数组最小值的索引 function _getMinKey(arr) { var a = arr[0]; var b = 0; for (var k in arr) { if (arr[k] ...

  4. 《javascript高级程序设计》 第20章 JSON

    20.1 语法 20.1.1 简单值 20.1.2 对象 20.1.3 数组 20.2 解析与序列化 20.2.1 JSON 对象 20.2.2 序列化选项 20.2.3 解析选项 JSON 对象有两 ...

  5. java设计之简单的JAVA计算器

    做这个东西主要是为了练习一下以前学习过的java Swing,所以那些复杂的算法就没有加载到里面去........ 先展示一下效果....,额,当然不是这个样子....   ---> 代码: p ...

  6. JDE修改Grid列样式

    Set Grid Color :to change the background color of a cell, row, column, or the entire control. Set Gr ...

  7. ASP.NET Web API路由规

    默认的规则 在ASP.NET MVC4中 global.asax.cs代码中并无注册默认路由规则的代码 代码如下: public class WebApiApplication : System.We ...

  8. Singleton、MultiThread、Lib——实现单实例无锁多线程安全API

        前阵子写静态lib导出单实例多线程安全API时,出现了CRITICAL_SECTION初始化太晚的问题,之后查看了错误的资料,引导向了错误的理解,以至于今天凌晨看到另一份代码,也不多想的以为s ...

  9. Eclipse中SVN的安装步骤(两种)和使用方法 [转]

    一.给Eclipse安装SVN,最常见的有两种方式:手动方式和使用安装向导方式.具体步骤如下: 方式一:手动安装 1.从官网下载site-1.6.9.zip文件,网址是:subclipse.tigri ...

  10. js 替换 当前URL 特定参数

    js 替换 当前URL 特定参数 2012-12-24 20:45:53|  分类: JS&JQuery |举报 |字号 订阅   //替换指定传入参数的值,paramName为参数,repl ...