----------- 10^18

  1. #include <bits/stdc++.h>
  2. #define min(a,b) ((a)<(b)?(a):(b))
  3. #define max(a,b) ((a)>(b)?(a):(b))
  4. using namespace std;
  5. typedef long long ll;
  6. inline int read() {
  7. int f=1,sum=0;
  8. char x=getchar();
  9. for(;(x<'0'||x>'9');x=getchar()) if(x=='-') f=-1;
  10. for(;x>='0'&&x<='9';x=getchar()) sum=sum*10+x-'0';
  11. return f*sum;
  12. }
  13.  
  14. int x_[10]={3,5,7,11,13,17,19,23};
  15.  
  16. inline ll mul(ll x,ll y,ll mod) {
  17. ll tmp=x*y-((ll)((long double)x/mod*y+0.5))*mod;
  18. return tmp<0?tmp+mod:tmp;
  19. }
  20.  
  21. inline ll qmul(ll x,ll ci,ll mod) {
  22. ll sum=1;
  23. for(;ci;ci>>=1,x=mul(x,x,mod))
  24. if(ci&1) sum=mul(sum,x,mod);
  25. return sum;
  26. }
  27.  
  28. inline bool Miller_Rabin(ll n) {
  29. if(n==1) return 0;
  30. if(n==2) return 1;
  31. if(!(n&1)) return 0;
  32. ll t=n-1;
  33. int now=0;
  34. while (!(t&1)) t>>=1,++now;
  35.  
  36. for(int i = 0; i <= 7; i++){
  37. if(x_[i]==n) return 1;
  38. ll x=qmul(x_[i],t,n),y=x;
  39. for(int j = 1; j <= now; j++) {
  40. x=mul(x,x,n);
  41. if(x==1&&!(y==1||y==n-1)) return 0;
  42. y=x;
  43. }
  44. if(x!=1) return 0;
  45. }
  46. return 1;
  47. }
  48.  
  49. int main () {
  50. //freopen("a.in","r",stdin);
  51. ll x;
  52. while (scanf("%lld",&x)==1) {
  53. if(Miller_Rabin(x)) puts("Y");
  54. else puts("N");
  55. }
  56. }

质数的判定 Miller_Rabin的更多相关文章

  1. 数学#素数判定Miller_Rabin+大数因数分解Pollard_rho算法 POJ 1811&2429

    素数判定Miller_Rabin算法详解: http://blog.csdn.net/maxichu/article/details/45458569 大数因数分解Pollard_rho算法详解: h ...

  2. LibreOJ#143 质数判定 [Miller_Rabin]

    题目传送门 质数判定 题目描述 判定输入的数是不是质数. 输入格式 若干行,一行一个数 x. 行数不超过 $1.5\times 10^4$ 输出格式 对于输入的每一行,如果 x是质数输出一行 Y,否则 ...

  3. 【模板】质数判断(Miller_Rabin)

    题意简述 给定一个范围N,你需要处理M个某数字是否为质数的询问(每个数字均在范围1-N内) 题解思路 费马小定理: n是一个奇素数,a是任何整数(\(1≤ a≤n-1\)) ,则\(a^{p-1}≡1 ...

  4. POJ中和质数相关的三个例题(POJ 2262、POJ 2739、POJ 3006)

    质数(prime number)又称素数,有无限个.一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数:否则称为合数.      最小的质数 ...

  5. 求第n个质数

    输入一个不超过 10000 的正整数 n,求第n个质数 样例输入 10 样例输出 29 题目地址 #include<stdio.h> #include<math.h> int ...

  6. Miller-Robin与二次探测

    素数在数论中经常被用到.也是数论的基础之一. 人们一直在讨论的问题是,怎样快速找到素数?或者判断一个数是素数? 1.根号n枚举 原始暴力方法. 2.埃氏筛 每个合数会被筛质因子次数次.复杂度O(Nlo ...

  7. (转载)O(N)的素数筛选法和欧拉函数

    转自:http://blog.csdn.net/dream_you_to_life/article/details/43883367 作者:Sky丶Memory 1.一个数是否为质数的判定. 质数,只 ...

  8. BZOJ_3667_Rabin-Miller算法_Mille_Rabin+Pollard rho

    BZOJ_3667_Rabin-Miller算法_Mille_Rabin+Pollard rho Description Input 第一行:CAS,代表数据组数(不大于350),以下CAS行,每行一 ...

  9. 『正睿OI 2019SC Day7』

    简单数论 质因子分解 素性测试 素性测试指的是对一个正整数是否为质数的判定,一般来说,素性测试有两种算法: \(1.\) 试除法,直接尝试枚举因子,时间复杂度\(O(\sqrt n)\). \(2.\ ...

随机推荐

  1. ArrayList中remove方法和set(null)的区别

    在分析源码ArrayList.remove()时,偶然发现了一个疑惑的点,就是:源码也是将最后一个对象的引用指向null(源码:elementData[--size] = null; // clear ...

  2. Spring激活profile的方式

    Spring中激活profile的方法:设置spring.profiles.active和spring.profiles.default这两个属性 设置激活profile属性的地方(优先级由高到底) ...

  3. P1053 第K小的取法

    题目描述 给定一个含n个数的数组.现在从中取出一些数.并把这些数相加得出一个和,如果有多种取法的和相同,则视为多种取法.求所有取法对应的和中第K小的和. 输入格式 第一行包括两个正整数n(n<= ...

  4. SpringBoot 上传文件到linux服务器 异常java.io.FileNotFoundException: /tmp/tomcat.50898……解决方案

    SpringBoot 上传文件到linux服务器报错java.io.FileNotFoundException: /tmp/tomcat.50898-- 报错原因: 解决方法 java.io.IOEx ...

  5. ZR10.1青岛集训三地联考

    ZR10.1青岛集训三地联考 谢谢dijk和smy A 题目大意: 已知斐波那契数列\(f\) 设 \[ F_i = \sum_{i = 0}^nf_if_{n - i} \] 求 \[ \sum_{ ...

  6. MD5登陆密码的生成

    package com.cinc.ecmp.userpermission.utils; import java.security.MessageDigest;import java.security. ...

  7. Hamcrest Tutorial

    Java Hamcrest Home Hamcrest Tutorial Introduction Hamcrest is a framework for writing matcher object ...

  8. Linux 内核硬件抽象

    我们结束 PCI 的讨论, 通过快速看一下系统如何处理在市场上的多种 PCI 控制器. 这只 是一个信息性的小节, 打算来展示给好奇的读者, 内核的面向对象分布如何向下扩展到最 低层. 用来实现硬件抽 ...

  9. boostrap-非常好用但是容易让人忽略的地方【6】:role属性

    普通样式,鼠标hover没有任何效果 <span>content</span> 加上role属性的样式,鼠标hover会有cursor:pointer的效果 <span ...

  10. torch or numpy

    黄色:重点 粉色:不懂 Torch 自称为神经网络界的 Numpy, 因为他能将 torch 产生的 tensor 放在 GPU 中加速运算 (前提是你有合适的 GPU), 就像 Numpy 会把 a ...