若干年之前的一道题,当时能写出来还是超级开心的,虽然是个板子题。一直忘记写博客,备忘一下。

米勒拉判大素数,关于米勒拉宾是个什么东西,传送门了解一下:biubiubiu~

B. Goldbach

题目传送门

自己看题意吧,直接贴代码了。

代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<cstdlib>
 6 #include<algorithm>
 7 #include<queue>
 8 #include<vector>
 9 #include<stack>
10 using namespace std;
11 typedef unsigned long long ll;
12 const int maxn=1e9+10;
13 const double eps=1e-7;
14 ll add_mod(ll a,ll b,ll mod)     //快乘法 基于快速幂的二分思想
15 {
16     ll ans=0;                    //由于考虑到取模数很大 快速幂会溢出
17     while(b)                     //必须使用该方法
18     {
19         if(b&1)                    //我这里写的是非递归版
20             ans=(ans+a)%mod;
21         a=a*2%mod;
22         b>>=1;
23     }
24     return ans;
25 }
26
27 ll pow_mod(ll a,ll n,ll mod)             //快速幂 递归版
28 {
29     if(n>1)
30     {
31         ll tmp=pow_mod(a,n>>1,mod)%mod;
32         tmp=add_mod(tmp,tmp,mod);
33         if(n&1) tmp=add_mod(tmp,a,mod);
34         return tmp;
35     }
36     return a;
37 }
38
39 bool Miller_Rabbin(ll n,ll a) //米勒拉宾素数判断函数主体
40 {
41     ll d=n-1,s=0,i;
42     while(!(d&1))             // 先把(2^s)*d 算出来
43     {
44         d>>=1;
45         s++;
46     }
47     ll t=pow_mod(a,d,n);    //a^d取一次余判断
48     if(t==1 || t==-1)        //一或负一则可以声明这可能是质数
49         return 1;
50     for(i=0; i<s; i++)               //不是的话继续乘上s个2
51     {
52         if(t==n-1)            //(n-1)*(n-1)%n=1 这一步是优化
53             return 1;
54         t=add_mod(t,t,n);    // 快乘
55     }
56     return 0;
57 }
58
59 int is_prime(ll n)
60 {
61     ll i,tab[4]= {3,4,7,11}; //本来应该取[1,n]内任意整数
62     for(i=0; i<4; i++)               //但一般这几个数足以,不需要太多组测试
63     {
64         if(n==tab[i])
65             return 1;        //小判断小优化~
66         if(!n%tab[i])
67             return 0;
68         if(n>tab[i] && !Miller_Rabbin(n,tab[i]))
69             return 0;
70     }
71     return 1;
72 }
73 ll max(ll a,ll b)
74 {
75     return a>b?a:b;
76 }
77 int main()
78 {
79     int t;
80     scanf("%d",&t);
81     while(t--)
82     {
83         ll n;
84         scanf("%llu",&n);
85         if(n==4)
86             printf("2 2\n");
87         else
88         {
89             for(ll i=2; i<=n/2; ++i)
90             {
91                 if(is_prime(i)&&is_prime(n-i))
92                 {
93                     printf("%llu %llu\n",i,n-i);
94                     break;
95                 }
96             }
97         }
98     }
99 }

当时还是我队友帮我D的bug,他现在都不理我了((ಥ_ಥ))

难受

转载于:https://www.cnblogs.com/ZERO-/p/9279891.html

计蒜客 25985.Goldbach-米勒拉宾素数判定(大素数) (2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 B)...相关推荐

  1. 【Java/补题/牛客/ACM赛制】2021年ICPC国际大学生程序设计竞赛暨陕西省第九届大学生程序设计竞赛(正式赛)

    文章目录 题目链接 知识一览 题目列表 快输 C - GCD(数论分块) 题目链接 2021年ICPC国际大学生程序设计竞赛暨陕西省第九届大学生程序设计竞赛(正式赛) 知识一览 01-数论分块 题目列 ...

  2. 计蒜客网站 ACM-ICPC亚洲区赛题

    The Preliminary Contest for ICPC China Nanchang National Invitational(2019) ACM-ICPC Jiaozuo Onsite ...

  3. 2018宁夏网络赛 B Goldbach (米勒拉宾素数测试)

    2018宁夏网络赛 B Goldbach (米勒拉宾素数测试) 题目链接 题目大意: 给你一个偶数n (2<n<=1e18) 让你把n分解成两个素数的和.(如果有多个输出任意一个) 解题思 ...

  4. 米勒-拉宾(MillerRabbin)素性测试算法

    原创滴博客~https://www.cnblogs.com/precious-ZPF/p/9481599.html 小编赶紧摘过来的,多看几遍向银家多学习学习QAQ 首先,在了解米勒-拉宾素性测试之前 ...

  5. 数论 判断素数:普通素数判别 线性筛 二次筛法求素数 米勒拉宾素数检验

    普通的素数判断法 当我们要判断一个数字是否是素数的时候,往往会直接看这个数字模1到这个数字的根号,看有没有等于零的,从而判断这个数字是不是素数,这样做的时间复杂度为O(sqrt(n)) bool is ...

  6. 计蒜客 挑战难题 爬楼梯

    计蒜客 挑战难题 爬楼梯 假设你现在正在爬楼梯,楼梯有n级.每次你只能爬1级或者2级,那么你有多少种方法爬到楼梯的顶部? 格式: 第一行输入一个数n(n<=50),代表楼梯的级数. 接下来一行输 ...

  7. 无脑博士的试管们java_计蒜客 无脑博士和他的试管们

    标签: 无脑博士有三个容量分别是A,B,C升的试管,A,B,C分别是三个从1到20的整数,最初,A和B试管都是空的,而C试管是装满硫酸铜溶液的.有时,无脑博士把硫酸铜溶液从一个试管倒到另一个试管中,直 ...

  8. 费马素性测试和米勒—拉宾素性测试

    chapter 1 Fermat's little theorem 费马小定理 费马小定理说的是:如果p是一个素数,那么对于任意一个整数a,a p − a 能被p整除,也可以用模运算表示如下: (p是 ...

  9. 最短路(遍历边)计蒜客—DD坐地铁

    题目: C 城有 n 个站点, m 条双向地铁,每条地铁有一个 companyicompany_icompanyi​表示它的公司,如果连续乘坐同一家公司的地铁只要花 1元钱就好.DD现在想出门找萨摩耶 ...

  10. K - Triangle 计蒜客 - 42405

    K - Triangle 计蒜客 - 42405 题意: 给你一个三角形的三点,再给你三角形边上一个点,让你求另一个点(也要在三角形上),使得平分三角形的面积 题解: 计算几何 三角形的三边ab,ac ...

最新文章

  1. ajax传递复杂参数
  2. gin自定义日志格式
  3. mysql 5.7源码包安装教程_MYSQL5.7源码包编译安装
  4. 【theano-windows】学习笔记十六——深度信念网络DBN
  5. php使用accdb,php如何连接access2007的accdb格式数据库文件?
  6. 交流信号叠加直流偏置_放大器偏置电流Ib需要完整的直流回路
  7. leetcode —— 19. 删除链表的倒数第N个节点
  8. 华为服务器报错信息,厂商 push 不通排查指南
  9. python 非线性规划_支持向量机:Stata 和 Python 实现
  10. android UI进阶之仿iphone的tab效果
  11. s1200 博图高速脉冲计数值没有变化_如何实现SIMATIC S7-1200的高速计数器(HSC)软件门控制?...
  12. git恢复已删除的本地分支
  13. 批量下载CMIP6数据
  14. OpenCascade Primitives BRep-Torus
  15. ISIS Neighbor Net Type DIS
  16. Revit二开--批量修改视图范围(revit宏)
  17. 技术状态管理(五)-技术状态记实
  18. Miller-Rabin素数检测算法笔记
  19. 读 Dov M. Gabbay 之 Handbook of the History of Logic. Volume 1: Greek, Indian and Arabic Logic
  20. 【Pytorch Lighting】第 10 章:扩展和管理培训

热门文章

  1. mysql的执行局计划
  2. Linux tty远程退出,screen 如果程序没结束就退出远程管理终端
  3. 装箱拆箱的意义 java_Java中的装箱和拆箱深入理解
  4. java enum private_初步理解Java枚举类型
  5. Process finished with exit code 1
  6. 小D课堂 - 零基础入门SpringBoot2.X到实战_第8节 数据库操作之整合Mybaties和事务讲解_32..SpringBoot2.x持久化数据方式介绍...
  7. docker-compose.yml(2)
  8. cpu的用户态和内核态和内存的用户空间内核空间
  9. opencart修改网站顶部电话联系方式
  10. centos下编译安装Openssl