hdu2138 How many prime numbers 米勒测试
时间:2019-10-31
本文章向大家介绍hdu2138 How many prime numbers 米勒测试,主要包括hdu2138 How many prime numbers 米勒测试使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
hdu2138 How many prime numbers
1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 5 ll prime[6] = {2,3,5,233,331}; 6 ll qmul(ll a, ll b, ll mod) { 7 ll res = 0; 8 while (b) { 9 if (b&1) res = (res+a)%mod; 10 a = (a+a)%mod; 11 b >>= 1; 12 } 13 return res; 14 } 15 ll qpow(ll a, ll b, ll mod) { 16 ll res = 1; 17 while (b) { 18 if (b&1) res = qmul(res,a,mod); 19 a = qmul(a,a,mod); 20 b >>= 1; 21 } 22 return res; 23 } 24 bool Miller_Rabin(ll p) { 25 if (p < 2) return 0; 26 if (p != 2 && p % 2 == 0) return false; 27 ll s = p-1; 28 while (!(s&1)) s >>= 1; 29 for (int i = 0; i < 5; i++) { 30 if (p == prime[i]) return true; 31 ll t = s, m = qpow(prime[i],s,p); 32 while (t != p-1 && m != 1 && m != p-1) { 33 m = qmul(m,m,p); 34 t <<= 1; 35 } 36 if (m != p-1 && !(t&1)) return false; 37 } 38 return true; 39 } 40 int main() { 41 int n; 42 while (~scanf("%d",&n)) { 43 int ans = 0; 44 for (int i = 1; i <= n; i++) { 45 ll x; scanf("%lld",&x); 46 if (Miller_Rabin(x)) ans++; 47 } 48 printf("%d\n",ans); 49 } 50 return 0; 51 }
原文地址:https://www.cnblogs.com/wstong/p/11770644.html
- HTTP常见面试题
- Java基础-18(01)总结Map,HashMap,HashMap与Hashtable区别,Collections工具类
- 一个oracle查询引起的bug (r4笔记第59天)
- Java基础-18(02)总结Map,HashMap,HashMap与Hashtable区别,Collections工具类
- 特殊的物化视图刷新 (r4笔记第77天)
- 通过单例模式模拟RAC连接 (r4笔记第76天)
- 网站上的验证码是怎么产生的?
- Java基础-17(01)总结,登录注册案例,Set集合,HashSet
- mongoDB初探第一篇(r4笔记第75天)
- 重温快速排序(r4笔记第73天)
- Java基础-17(01)总结,TreeSet,LinkHashSet
- 海量数据迁移之数据抽取流程 (r4笔记第72天)
- CSS Selectors Level 4新特性全面解析
- 巧用外部表避免大量的insert (r4笔记第71天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- python第二十九课——文件读写(写数据的操作)
- python第二十九课——文件读写(复制文件)
- python第三十课--异常(异常处理定义格式和常见类型)
- python第三十课--异常(finally讲解)
- python第三十课--异常(else讲解)
- Linux系统——shell脚本编程基础介绍
- python第三十课--异常(raise关键字)
- python第三十课--异常(异常对象传递过程)
- python第三十课--异常(with as操作)
- linux系统运维企业常见面试题集合(二)
- Linux系统Shell编程—企业生产案例(一)
- python第三十一课--递归(1.简单递归函数的定义和使用)
- python第三十一课--递归(2.遍历某个路径下面的所有内容)
- python第三十一课--递归(3.递归的弊端)
- python第三十二课——栈