1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. void sol(ll x){
  5. int y=0;
  6. for(ll i=2;i*i<=x;++i)
  7. if(x%i==0){
  8. int j=0;
  9. for(;x%i==0;x/=i)++j;
  10. if(y++)cout<<"*";
  11. cout<<i;
  12. if(j!=1)cout<<"^"<<j;
  13. }
  14. if(x!=1){
  15. if(y)cout<<"*";
  16. cout<<x;
  17. }
  18. cout<<endl;
  19. }
  20. bool jud(ll x){
  21. for(ll i=2;i*i<=x;++i)
  22. if(x%i==0)return 0;
  23. return 1;
  24. }
  25. ll wop(ll s,ll n,ll p){
  26. ll t=1;
  27. for(;n;n>>=1){
  28. if(n&1)t=t*s%p;
  29. if(n>1)s=s*s%p;
  30. }
  31. return t;
  32. }
  33. ll phi(ll x){
  34. ll s=x;
  35. for(ll i=2;i*i<=x;++i)
  36. if(x%i==0){
  37. while(x%i==0)x/=i;
  38. s=s/i*(i-1);
  39. }
  40. if(x!=1)s=s/x*(x-1);
  41. return s;
  42. }
  43. ll gen(ll p){
  44. static ll c[16];
  45. ll s=phi(p),x=s;
  46. int k=0;
  47. for(ll i=2;i*i<=x;++i)
  48. if(x%i==0){
  49. while(x%i==0)x/=i;
  50. c[k++]=i;
  51. }
  52. if(x!=1)c[k++]=x;
  53. for(ll i=2;;++i){
  54. int j=0;
  55. while(j!=k&&wop(i,s/c[j],p)!=1)
  56. ++j;
  57. if(j==k)return i;
  58. }
  59. }
  60. void out(ll p){
  61. int j=__builtin_ctzll(p-1);
  62. cout<<setw(8)<<p;
  63. cout<<setw(4)<<gen(p);
  64. cout<<" 2^"<<j;
  65. cout<<" * "<<setw(5)<<(p-1>>j);
  66. cout<<endl;
  67. }
  68. int main(){
  69. for(ll i=1;;++i){
  70. ll j=(i<<20)+1;
  71. if(j>2e9)break;
  72. if(jud(j))out(j);
  73. }
  74. }

FFT质数打表程序的更多相关文章

  1. PHP自动分表程序

    http://blog.zol.com.cn/2210/article_2209590.html /** * 分表程序 *  * @author Shen Xi shen.xi@zol.com.cn  ...

  2. python作业员工信息表程序(第四周)

    作业需求: 1. 员工信息表程序,实现增删改查操作: 2. 可进行模糊查询,语法至少支持下面3种: select name,age from staff_table where age > 22 ...

  3. HDU——1286找新朋友(欧拉函数+质数打表)

    找新朋友 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  4. ABAP 通过字段找表程序

    2.获取数据保存在哪个数据表的方法: 1.前台对指定栏位 使用F1帮助找表,2.st05 跟踪业务操作过程,检索需要的数据表,(此方法找表很高效)3.对于文本字段找表,可以找到前台维护处,->维 ...

  5. python九九乘法表程序代码

    按照c语言的思路来考虑python的,方法很简单,直接运用双重循环即可,本代码为了代码量少采用的是while嵌套双循环. 取两个随机变量 (1)i和j都从1开始(因为表中最小数值为1) (2)i控制第 ...

  6. 用shell编写小九九乘法表程序

    1.使用for循环 运行结果: 2.方法二:for循环 运行结果: 备注: 1. echo -n 的意思是不自动换行,因为在linux shell中 echo到最后一个字符时会自动换行的,所以echo ...

  7. bzoj 1053 [HAOI2007]反素数ant——关于质数的dfs / 打表

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1053 写了个打表程序. #include<iostream> #include& ...

  8. 用友时空B/S表单外挂(接口)程序操作说明文档

    用友时空B/S表单外挂(接口)程序 一.B/S表单接口需求 众所周知,用友时空KSOA支持B/S架构.且移动商务.在线门店,都是完全基于B/S架构的. B/S架构的优越性在于没有本地客户端和本地数据, ...

  9. BZOJ3798: 特殊的质数(分段打表)

    题意 题目链接 Sol 分块打表,非常好的思想. 对于这种求$[A, B]$区间内xxx的数的个数,然后$B$又不算是特别大的题,考虑分段打表 每个块的大小为$10^5$,打$3 * 10^3$个.然 ...

随机推荐

  1. [BZOJ2730][HNOI2012]矿场搭建(求割点)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2730 分析: 如果坍塌的点不是割点,那没什么影响,主要考虑坍塌的点是割点的情况. 显然 ...

  2. Java关键字this、super使用总结

    版权声明:原创作品,如需转载,请与作者联系.否则将追究法律责任. 作者:熔岩日期:2007-03-01MSN :leizhimin@126.com声明:原创作品,未经授权,谢绝转载! 好久没有对所学知 ...

  3. Matlab 的reshape函数

    看Matlab的help文档讲得不是清楚. 先给上一段代码: >> a=[1 2 3;4 5 6;7 8 9;10 11 12]; >> b=reshape(a,2,6); 这 ...

  4. 使用delegate实现简单的查询功能

    protected void imgbtnSearch_Click(object sender, System.Web.UI.ImageClickEventArgs e) { string keyWo ...

  5. Thinkphp url 除去index.php

    例如你的原路径是 http://localhost/test/index.php/index/add那么现在的地址是 http://localhost/test/index/add如何去掉index. ...

  6. extjs store的操作

    先来个声明,看着不错,贴过来的,没都测试过. Store.getCount()返回的是store中的所有数据记录,然后使用for循环遍历整个store,从而得到每条记录. 除了使用getCount() ...

  7. [转]response.getWriter().write()与out.print()的区别

    原文地址:http://blog.csdn.net/javaloveiphone/article/details/8133772 1.首先介绍write()和print()方法的区别:   (1).w ...

  8. java基础3.0:Java常用API

    本篇介绍Java基础中常用API使用,当然只是简单介绍,围绕重要知识点引入,巩固开发知识,深入了解每个API的使用,查看JavaAPI文档是必不可少的. 一.java.lang包下的API Java常 ...

  9. ajax技术应用(转)

    ajax简介 AJAX即"Asynchronous Javascript And XML"(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术.Ajax不 ...

  10. 安装Win7提示Windows无法安装到磁盘怎么办

    Windows之家(www.windowszj.com):在安装Win7系统的过程中,由于每台电脑的状态不一样,比如硬件配置原因,或者是硬盘格式.硬盘状态等问题,会使得每台电脑在安装过程中都会有些不一 ...