主要写于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⌊log⁡2x⌋y_i=x_{2^{\lfloor\log_2x\rfloor}}yi​=x2⌊log2​x⌋​。这样枚举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(log⁡2p)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∑n​ip⌊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树相关推荐

  1. 输出递归因数分解php,[学习笔记] Miller-Rabin质数测试 Pollard-Rho质因数分解

    Miller-Rabin质数测试 & Pollard-Rho质因数分解 考试遇见卡质因数分解的题了...活久见...毒瘤lun 于是就学了一发qaq Pollard-Rho分解质因数的话需要依 ...

  2. 3.3 费马质数测试

      说实话,费马质数测试是有点坑的,并不能保证这个数真的是一个质数.费马质数测试的理论依据是费马小定理Fermat's little theorem.费马小定理的内容是,对于一个质数p,和一个与他互质 ...

  3. 2021-03-08 C语言strcasecmp函数和strncasecmp函数介绍和实例测试

    C语言strcasecmp函数和strncasecmp函数介绍和实例测试 一. strcasecmp()用来比较参数s1和s2字符串,比较时会自动忽略大小写的差异.若参数s1和s2字符串相同则返回0. ...

  4. InternetOpen系列函数进行下载的测试例子

    转自 :http://hi.baidu.com/wlpscu/item/d10a2a0ecf14b491a2df4376 一个完整利用InternetOpen等系列函数进行下载的测试例子 // TOD ...

  5. 一个完整利用InternetOpen等系列函数进行下载的测试例子

    2011-08-14 12:03 一个完整利用InternetOpen等系列函数进行下载的测试例子 // TODO: Add extra validation here  HINTERNET hsse ...

  6. 定义两个同名的重载函数,分别求矩形和圆的周长,然后在main函数中对这两个函数进行调用并测试其功能

    定义两个同名的重载函数,分别求矩形和圆的周长,然后在main函数中对这两个函数进行调用并测试其功能. 求矩形的周长时需要输入矩形的长和宽:求圆的周长时需要输入圆的半径. #include<ios ...

  7. 《Python CookBook2》 第一章 文本 - 测试一个对象是否是类字符串 字符串对齐

    测试一个对象是否是类字符串 任务 有时候需要测试一个对象,尤其是当你在写一个函数或者方法的时候,经常需要测试传入的参数是否是一个字符串. 解决方案 利用内建的isinstance 和basestrin ...

  8. 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() ...

  9. DCMTK:TLS测试DcmSCP和DcmSCPPool类

    DCMTK:TLS测试DcmSCP和DcmSCPPool类 TLS测试DcmSCP和DcmSCPPool类 TLS测试DcmSCP和DcmSCPPool类 #include "dcmtk/c ...

最新文章

  1. Android架构篇-3 网络接口封装
  2. 修改mysql用utf8mb4_更改MySQL数据库的编码为utf8mb4
  3. 以太坊节点布置(1) 安装geth
  4. 17大主链均狂跌国内项目却看涨, 本周不可不知的7组榜单 | 数据周榜
  5. 我的Java开发学习之旅------gt;在Dos环境下Java内部类的编译和运行
  6. VMWare Fusion 安装 Centos7操作系统
  7. 使用html+css实现-静态开源案例-品优购
  8. Word文档单页页眉横线如何去除
  9. 用python的turtle画五角星
  10. (已解决)ubuntu下网易云音乐无法打开
  11. 数据分析-思维分析逻辑day02
  12. pdf java解析_用java如何解析pdf文件
  13. Excel应用技巧:合并单元格的排序
  14. 三剑客----awk
  15. CSGO控制台与常用指令
  16. Oracle-Materialized View
  17. Vue实现拖拽穿梭框功能四种方式
  18. nz-zorro 主题切换 动态
  19. Intel(R) Xeon(R) CPU E5-2678 v3
  20. 计算机图像双曲线的代码,计算机图形学(二)输出图元_6_OpenGL曲线函数_5_其他曲线...

热门文章

  1. 淘宝最新开店卖家店铺采集同行店铺的步骤
  2. CentOS 6.x上搭建vSFTPD服务器搭建与配置详解
  3. FusionGAN:VIIF
  4. ORB_SLAM的ORB特征提取:
  5. win10家庭版,夜间模式打开无反应
  6. Kwp2000协议的应用(硬件原理使用篇)
  7. 【环信集成指北】Android SDK 的两种导入方式
  8. 《Cisco QoS认证考试指南(第2版)》——第6章流量限速和整形
  9. M1 mac安装node
  10. 指针生成网络(PGN)的简单总结