数学基础4 Euler函数 二次剩余 米拉质数测试 波拉德的罗 类欧几里得算法 Stern-Brocot树
主要写于2018.9
欧拉函数
奇偶性
2∣φ(n)⇔n≠22|\varphi(n)\Leftrightarrow n =\not 22∣φ(n)⇔n≠2
约数拆分
φ(pq)=φ(p)φ(q)gcd(p,q)φ(gcd(p,q))\varphi(pq)=\frac{\varphi(p)\varphi(q)\gcd(p,q)}{\varphi(\gcd(p,q))}φ(pq)=φ(gcd(p,q))φ(p)φ(q)gcd(p,q)
互质的数的和
比nnn小的与nnn互质的数的和为n⋅φ(n)2n\cdot \frac{\varphi(n)}{2}n⋅2φ(n)。
证明:满足条件的数是成对出现的,可分为φ(n)2\frac{\varphi(n)}{2}2φ(n)组,每组和为nnn。
反演性质
∑d∣nφ(d)=n\sum_{d|n}\varphi(d)=nd∣n∑φ(d)=n
Miller-Rabin 质数测试
二次探测定理
模nnn意义下若存在ak≠1a^k=\not 1ak≠1且ak≠n−1a^k=\not n-1ak≠n−1,满足a2k=1a^{2k}=1a2k=1,则nnn不是质数。
欧拉定理推论(费马小定理)
若nnn是质数,则对于任意a(n∤a)a(n\nmid a)a(n∤a),an−1=1(modn)a^{n-1}= 1\pmod nan−1=1(modn)。
算法
将n−1n-1n−1分解为u⋅2t(2∤u)u\cdot 2^t(2\nmid u)u⋅2t(2∤u)。每次在[1,n−1][1,n-1][1,n−1]中随机aaa作底数(即上面提到的aaa),枚举222的指数做二次探测定理,再做费马小定理,若是合数则可以直接判断,否则有一定概率是质数。实验证明对于数量为10510^5105级别的询问随机888次即可保证通过。
Pollard’s Rho 分解大数
生日悖论
不停地在[1,n][1,n][1,n]中取随机数,会在O(n)O(\sqrt n)O(n)次第一次重复。
算法
若gcd(abs(x−y),n)≠1\gcd(\mathrm{abs}(x-y),n)=\not 1gcd(abs(x−y),n)≠1,则找到一个因数。
设x0=Cx_0=Cx0=C,xi=xi−12+c(i>0)x_i=x_{i-1}^2+c(i>0)xi=xi−12+c(i>0),yi=x2⌊log2x⌋y_i=x_{2^{\lfloor\log_2x\rfloor}}yi=x2⌊log2x⌋。这样枚举iii,若gcd≠1\gcd=\not1gcd≠1则找到,若x=yx=yx=y则找不到。
于是每次随机CCC和ccc,可证明期望O(p)O(\sqrt p)O(p)次可找到一个大小为ppp的因数。
二次剩余
欧拉准则
模ppp意义下,aaa是二次剩余等价于ap−12≡1a^{\frac{p-1}{2}}\equiv 1a2p−1≡1,aaa不是二次剩余等价于ap−12≡−1a^{\frac{p-1}{2}}\equiv -1a2p−1≡−1。
Cipolla算法
若a2−na^2-na2−n不是二次剩余,则nnn的二次剩余是(a+a2−n)p+12(a+\sqrt {a^2-n})^\frac{p+1}{2}(a+a2−n)2p+1。可证明答案中根号项的系数为000。
随机aaa即可。时间复杂度为O(log2p)O(\log^2 p)O(log2p)。
类欧几里得算法
(2019.4)
fff函数
f(n,a,b,c)=∑i=0n⌊ai+bc⌋f(n,a,b,c)=\sum_{i=0}^{n}\lfloor\frac{ai+b}{c}\rfloor f(n,a,b,c)=i=0∑n⌊cai+b⌋
其中aaa、bbb和ccc均为整数。
如果a≥ca\ge ca≥c或b≥cb\ge cb≥c则可以先分离一部分。否则将后面展开然后交换和号再化简得到f(n,a,b,c)=nm−f(m−1,c,c−b−1,a)f(n,a,b,c)=nm-f(m-1,c,c-b-1,a)f(n,a,b,c)=nm−f(m−1,c,c−b−1,a),其中m=am+bcm=\frac{am+b}{c}m=cam+b。
fp,qf_{p,q}fp,q函数
fp,q(n,a,b,c)=∑i=0nip⌊ai+bc⌋qf_{p,q}(n,a,b,c)=\sum_{i=0}^{n}i^p\lfloor\frac{ai+b}{c}\rfloor^q fp,q(n,a,b,c)=i=0∑nip⌊cai+b⌋q
如果a≥ca\ge ca≥c或b≥cb\ge cb≥c则可以先分离一部分,用二项式定理,转化为求ppp、qqq更小的函数值。否则过程差不多。要用精彩变换(fjzzq2002©)xk=∑i=0x−1(i+1)k−ikx^k=\sum_{i=0}^{x-1}(i+1)^k-i^kxk=∑i=0x−1(i+1)k−ik。
SB树
*from https://en.wikipedia.org/wiki/Stern–Brocot_tree
可用于在分数域上二分。
威尔逊定理
4.26
(p−1)!≡p−1(modp)(p-1)!\equiv p-1\pmod p(p−1)!≡p−1(modp)
数学基础4 Euler函数 二次剩余 米拉质数测试 波拉德的罗 类欧几里得算法 Stern-Brocot树相关推荐
- 输出递归因数分解php,[学习笔记] Miller-Rabin质数测试 Pollard-Rho质因数分解
Miller-Rabin质数测试 & Pollard-Rho质因数分解 考试遇见卡质因数分解的题了...活久见...毒瘤lun 于是就学了一发qaq Pollard-Rho分解质因数的话需要依 ...
- 3.3 费马质数测试
说实话,费马质数测试是有点坑的,并不能保证这个数真的是一个质数.费马质数测试的理论依据是费马小定理Fermat's little theorem.费马小定理的内容是,对于一个质数p,和一个与他互质 ...
- 2021-03-08 C语言strcasecmp函数和strncasecmp函数介绍和实例测试
C语言strcasecmp函数和strncasecmp函数介绍和实例测试 一. strcasecmp()用来比较参数s1和s2字符串,比较时会自动忽略大小写的差异.若参数s1和s2字符串相同则返回0. ...
- InternetOpen系列函数进行下载的测试例子
转自 :http://hi.baidu.com/wlpscu/item/d10a2a0ecf14b491a2df4376 一个完整利用InternetOpen等系列函数进行下载的测试例子 // TOD ...
- 一个完整利用InternetOpen等系列函数进行下载的测试例子
2011-08-14 12:03 一个完整利用InternetOpen等系列函数进行下载的测试例子 // TODO: Add extra validation here HINTERNET hsse ...
- 定义两个同名的重载函数,分别求矩形和圆的周长,然后在main函数中对这两个函数进行调用并测试其功能
定义两个同名的重载函数,分别求矩形和圆的周长,然后在main函数中对这两个函数进行调用并测试其功能. 求矩形的周长时需要输入矩形的长和宽:求圆的周长时需要输入圆的半径. #include<ios ...
- 《Python CookBook2》 第一章 文本 - 测试一个对象是否是类字符串 字符串对齐
测试一个对象是否是类字符串 任务 有时候需要测试一个对象,尤其是当你在写一个函数或者方法的时候,经常需要测试传入的参数是否是一个字符串. 解决方案 利用内建的isinstance 和basestrin ...
- WEB渗透测试知识梳理-注入类-1-SQL注入-Mysql
渗透测试知识梳理-注入类-1-SQL注入-Mysql 1. SQL注入 1.1 漏洞简介 1.2 漏洞危害 1.3 漏洞详情 1.3.1 MySQL注入 1.3.1.1 报错注入 1. floor() ...
- DCMTK:TLS测试DcmSCP和DcmSCPPool类
DCMTK:TLS测试DcmSCP和DcmSCPPool类 TLS测试DcmSCP和DcmSCPPool类 TLS测试DcmSCP和DcmSCPPool类 #include "dcmtk/c ...
最新文章
- Android架构篇-3 网络接口封装
- 修改mysql用utf8mb4_更改MySQL数据库的编码为utf8mb4
- 以太坊节点布置(1) 安装geth
- 17大主链均狂跌国内项目却看涨, 本周不可不知的7组榜单 | 数据周榜
- 我的Java开发学习之旅------gt;在Dos环境下Java内部类的编译和运行
- VMWare Fusion 安装 Centos7操作系统
- 使用html+css实现-静态开源案例-品优购
- Word文档单页页眉横线如何去除
- 用python的turtle画五角星
- (已解决)ubuntu下网易云音乐无法打开
- 数据分析-思维分析逻辑day02
- pdf java解析_用java如何解析pdf文件
- Excel应用技巧:合并单元格的排序
- 三剑客----awk
- CSGO控制台与常用指令
- Oracle-Materialized View
- Vue实现拖拽穿梭框功能四种方式
- nz-zorro 主题切换 动态
- Intel(R) Xeon(R) CPU E5-2678 v3
- 计算机图像双曲线的代码,计算机图形学(二)输出图元_6_OpenGL曲线函数_5_其他曲线...