数学学习笔记
Miller_Rabin素性测试
-
常规判定素数方法: 从 \(1至\sqrt{n}\) 中枚举 \(p\) ,判断 \(p | n\)
-
Miller_Rabin
对于一个 \(n\) ,假如它是质数
设 \(n - 1 = d \times 2^r\) , 其中 \(d\) 是一个奇数
对于每一个 \(1 \leq a < n\) 对于下面两种条件,至少有一个是成立的- \(a^d \equiv 1 \pmod n\)
- 存在 \(0 \leq i < r\) , 满足 \(a^{d\times2^i}\equiv n-1\pmod n\)
于是当前对于 \(1 \leq a<n\)
- 满足至少一个条件 --> \(n\) 可能是质数
- 两个条件都不满足 --> \(n\) 一定不是质数
于是可以寻找对个 \(a\) 对 \(n\) 进行检测, 如果全部通过检测有极大概率 \(n\) 为质数
bool miller_rabin(int n, int a) {
int d = n - 1, r = 0;
while (!(d & 1))
d >>= 1, r++;
int x = ksm(a, d, n);
if (x == 1) return true;
for (int i = 0; i < r; i++) {
if (x == n - 1) return true;
x = 1ll * x * x % n;
}
return false;
}
bool prime(int n) {
if (n < 2) return false;
int prime_list[10] = {2, 3, 5, 11, 17, 19, 23, 37, 41, 43};
for (int a = 0; a < 10; a++) {
if (n == prime_list[a]) return true;
if (!miller_rabin(n, prime_list[a])) return false;
}
return true;
}
逆元
如果 \(gcd(a,m) = 1\) 且存在唯一的 \(b\) 存在 \(a \times b \equiv 1 \pmod m\) 且 \(1\leq b<m\), \(b\) 为 \(a\) 在模 \(m\) 意义下的逆元
费马小定理 \(a ^ {p - 1}\equiv 1\pmod p (gcd(a, p) = 1)\)
欧拉定理 \(a ^ {\phi(m)} \equiv 1 \pmod m (gcd(a, m) = 1)\)
扩展欧拉定理
- \(c < \phi(m)\) 则 \(a^c\equiv a^c \pmod m\)
- \(c >= \phi(m)\) 则 \(a^c\equiv a^{[c \bmod \phi(m)] + \phi(m)} \pmod m\)
线性求逆元
\(a ^ {p - 1}\equiv 1\pmod p (gcd(a, p) = 1)\)
\(m \bmod a = m - a \times \lfloor \frac{m}{a} \rfloor\)
设 \(b = m \bmod a\)
\(a^{-1}\equiv a^{-1} \times b\times b^{-1} = a^{-1}\times (m - a \times \lfloor \frac{m}{a} \rfloor)\times b^{-1} \pmod m\)
得 \(a^{-1}\equiv -\lfloor \frac{m}{a} \rfloor \times b^{-1} \pmod m\)
原文地址:https://www.cnblogs.com/hs-wfz-orz/p/15168000.html
- CompoundButton.OnCheckedChangeListener与RadioGroup.OnCheckedChangeListener冲突
- Liora Rosin & Golan Levi:在北京驾车看洛杉矶的落日
- iphone/ipad/itouch进入DFU模式最简单的操作办法
- 微信小程序for循环里条件判断
- objective-C 的OOP(下)-类(static)方法、实例方法、overwrite(覆写)、属性(property)
- 你真的会玩SQL吗?删除重复数据且只保留一条
- activity结束之后刷新之前的activity的内容
- 徐扬生:与机器人共建未来社会
- Aerospike在实时竞价广告中的应用
- objective-C 的Hello World!
- objective-C 的代码文件组织
- objective-C 的OOP(上)--类定义、继承及方法调用
- jQuery打造智能提示插件二(可编辑下拉框)
- Nicholas Christakis:朋友多是由基因决定的?
- 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 数组属性和方法
- 使用 Azure Blob Stoage 实现一个静态文件服务器
- java学习--反射详解
- Redis中的管道Pipeline操作
- 查看YARN任务日志的几种方式
- 简易数字频率计(verilog HDL设计)(2020维护版本)
- C++核心准则CP.111:如果真的需要好双重检查锁,使用惯用模式
- C++核心准则CP.200:使用volatile只能表明该变量是非C++内存
- C++核心准则E.2:通过抛出异常来表明函数无法执行指定的任务
- C++核心准则E.3:异常应该只用于错误处理
- [Go] GO语言实战-gin框架项目实现中英文切换
- [Go] Go语言实战-基于websocket浏览器通知的实现
- 快10年的老前端了,我还分不清 slice 和 splice,这到底是谁的锅
- 第4章 Jenkins系统用户认证配置管理
- 回答公众号留言的2个关于相关性分析的问题
- css 透明度和百分比对应值