只要很朴素的分解就可以了,数据量不大

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include <math.h>
  5. #include <iostream>
  6. #include <stack>
  7. #include <algorithm>
  8.  
  9. #define ll long long
  10. using namespace std;
  11. const int INF = 0x3f3f3f3f;
  12. const int MAXSIZE = ;
  13. ll n;
  14. stack <int> s;
  15.  
  16. void init_prim(){
  17. memset(visit, true, sizeof(visit));
  18. int num = ;
  19. for (int i = ; i <= nn; ++i){
  20. if (visit[i] == true){
  21. num++;
  22. prime[num] = i;
  23. }
  24. for (int j = ; ((j <= num) && (i * prime[j] <= nn)); ++j){
  25. visit[i * prime[j]] = false;
  26. if (i % prime[j] == ) break; //点睛之笔
  27. }
  28. }
  29. }
  30.  
  31. ll quickpow(ll m,ll n,ll k){
  32. int b = ;
  33. while (n > ){
  34. if (n & )
  35. b = (b*m)%k;
  36. n = n >> ;
  37. m = (m*m)%k;
  38. }
  39. return b;
  40. }
  41.  
  42. ll getsum(int x){
  43. int sum = ;
  44. while(x){
  45. sum += x % ;
  46. x = x / ;
  47. }
  48. return sum;
  49. }
  50.  
  51. bool witness(ll a,ll n){
  52. ll t,d,x;
  53. d = ;
  54. int i=ceil(log(n-1.0)/log(2.0)) - ;//j
  55. for(;i>=;i--)
  56. {
  57. x=d; d=(d*d)%n;
  58. if(d== && x!= && x!=n-) return true;
  59. if( ((n-) & (<<i)) > )
  60. d=(d*a)%n;
  61. }
  62. return d==? false : true;
  63. }
  64. bool miller_rabin(ll n){
  65. int s[]={,,};
  66. if(n== || n == ) return true;
  67. if(n== || ((n&)==)) return false;
  68. for(int i=;i<;i++)//
  69. if(witness(s[i], n)) return false;
  70. return true;
  71. }
  72.  
  73. bool isPrime(ll n){
  74. if(n == || n == || n == || n == ) return true;
  75. else if(n % == || n % == || n % == ) return false;
  76. for(int i = ; i <= sqrt(n); ++i){
  77. if(n % i == ) return false;
  78. }
  79. return true;
  80. }
  81.  
  82. bool judge(ll x){
  83. int sum1, sum2 = , i;
  84. sum1 = getsum(x);
  85. for(i = ; i <= sqrt(x); ++i){
  86. if(x % i == ){
  87. s.push(i);
  88. x = x / i;
  89. while(x % i == ){
  90. s.push(i);
  91. x = x / i;
  92. }
  93. }
  94. if(x == )
  95. break;
  96. }
  97. if(x > ) s.push(x);
  98. while(!s.empty()){
  99. sum2 += getsum(s.top());
  100. s.pop();
  101. }
  102. if(sum1==sum2) return true;
  103. else return false;
  104. }
  105. int main(){
  106. int i, j, k;
  107. while(cin >> n){
  108. if(n <= ) break;
  109. ll num = n;
  110. while(){
  111. ++num;
  112. if(isPrime(num)) continue;
  113. else if(judge(num)){
  114. cout << num << endl;
  115. break;
  116. }
  117. }
  118. }
  119. return ;
  120. }

POJ 1142 质因数分解的更多相关文章

  1. POJ 1845 Sumdiv#质因数分解+二分

    题目链接:http://poj.org/problem?id=1845 关于质因数分解,模板见:http://www.cnblogs.com/atmacmer/p/5285810.html 二分法思想 ...

  2. POJ 2429 long long 质因数分解

    GCD & LCM Inverse Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 16206   Accepted: ...

  3. poj 3421 X-factor Chains——质因数分解

    题目:http://poj.org/problem?id=3421 记忆化搜索竟然水过去了.仔细一想时间可能有点不对,但还是水过去了. #include<iostream> #includ ...

  4. Poj 1401 Factorial(计算N!尾数0的个数——质因数分解)

    一.Description The most important part of a GSM network is so called Base Transceiver Station (BTS). ...

  5. POJ 1142 Smith Numbers(史密斯数)

    Description 题目描述 While skimming his phone directory in 1982, Albert Wilansky, a mathematician of Leh ...

  6. poj 1811 大数分解

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

  7. algorithm@ 大素数判定和大整数质因数分解

    #include<stdio.h> #include<string.h> #include<stdlib.h> #include<time.h> #in ...

  8. 求n!质因数分解之后素数a的个数

    n!质因数分解后P的个数=n/p+n/(p*p)+n/(p*p*p)+......直到n<p*p*p*...*p //主要代码,就这么点东西,数学真是厉害啊!幸亏我早早的就退了数学2333 do ...

  9. AC日记——质因数分解 1.5 43

    43:质因数分解 总时间限制:  1000ms 内存限制:  65536kB 描述 已知正整数 n 是两个不同的质数的乘积,试求出较大的那个质数. 输入 输入只有一行,包含一个正整数 n. 对于60% ...

随机推荐

  1. python第一步

    安装2.7的python 环境:到cmd下python,就可以跑代码了,要是想运行py文件,在命令行python test.py,记得在windows下把python加入环境变量 学习基础的语法: 注 ...

  2. 全新安装mysql最新版本

    写在前面: 下面写的东西只是最近安装的一个说明,是在系统中没存在mysql的情况下安装的,后期会根据官方文档写一个详细有价值的文档 安装原理:利用mysql官方的mysql_apt-repositor ...

  3. 循环-10. 求序列前N项和(15)

    #include<iostream>#include<iomanip>using namespace std;int main(){    double i,n,t,a,b;  ...

  4. 指针和引用区别 C++

    #include <iostream> using namespace std; int main(){ ; void cubeByPoint(int *);//指针传参声明 void c ...

  5. 静态方法中为什么不能使用this

  6. java csv 文件 操作类

    一个CSV文件操作类,功能比较齐全: package tool; import java.io.BufferedReader; import java.io.BufferedWriter; impor ...

  7. android天气查询(一)websevice之ksoap2软件包的使用

    对于用到天气信息,首先我想: 第一:数据不可能是我测得的,必须是网上的信息. 第二:网上的信息分为好多种,具体哪种比较好一点,这里我总结了两种. 第三:数据JSON怎么解析. 第四:如何提出数据与显示 ...

  8. iOS Dev (67) 单例的实现

    iOS Dev (67) 单例的实现 博客:http://blog.csdn.net/prevention 作者:大锐哥 摘自:Learn iPhone and iPad cocos2d Game D ...

  9. [转载]CSS 创作指南(Beta)(css规范)

    当年还在纠结各种规范的时候,不知道从哪里翻到这个,就让我脱离了css这个规范的苦海了... 反正就是团队和项目合作说的算,选择合适的进行使用就可以了,见到合适的文章,我也会转载过来的 来源 https ...

  10. Zend Studio 如何配置本地apache服务器使用xdebug调试php脚本

    本地环境搭配: apache 2.2 安装位置:D:/program files/Apache Software Foundation/Apache2.2 php 5.2.10 安装位置:C:/php ...