主要写于2018.9
欧拉函数
奇偶性
2∣φ(n)⇔n≠2
约数拆分
φ(pq)=φ(gcd(p,q))φ(p)φ(q)gcd(p,q)
互质的数的和
比n小的与n互质的数的和为n⋅2φ(n)。
证明:满足条件的数是成对出现的,可分为2φ(n)组,每组和为n。
反演性质
d∣n∑φ(d)=n
Miller-Rabin 质数测试
二次探测定理
模n意义下若存在ak≠1且ak≠n−1,满足a2k=1,则n不是质数。
欧拉定理推论(费马小定理)
若n是质数,则对于任意a(n∤a),an−1=1(modn)。
算法
将n−1分解为u⋅2t(2∤u)。每次在[1,n−1]中随机a作底数(即上面提到的a),枚举2的指数做二次探测定理,再做费马小定理,若是合数则可以直接判断,否则有一定概率是质数。实验证明对于数量为105级别的询问随机8次即可保证通过。
Pollard’s Rho 分解大数
生日悖论
不停地在[1,n]中取随机数,会在O(n)次第一次重复。
算法
若gcd(abs(x−y),n)≠1,则找到一个因数。
设x0=C,xi=xi−12+c(i>0),yi=x2⌊log2x⌋。这样枚举i,若gcd≠1则找到,若x=y则找不到。
于是每次随机C和c,可证明期望O(p)次可找到一个大小为p的因数。
二次剩余
欧拉准则
模p意义下,a是二次剩余等价于a2p−1≡1,a不是二次剩余等价于a2p−1≡−1。
Cipolla算法
若a2−n不是二次剩余,则n的二次剩余是(a+a2−n)2p+1。可证明答案中根号项的系数为0。
随机a即可。时间复杂度为O(log2p)。
类欧几里得算法
(2019.4)
f函数
f(n,a,b,c)=i=0∑n⌊cai+b⌋
其中a、b和c均为整数。
如果a≥c或b≥c则可以先分离一部分。否则将后面展开然后交换和号再化简得到f(n,a,b,c)=nm−f(m−1,c,c−b−1,a),其中m=cam+b。
fp,q函数
fp,q(n,a,b,c)=i=0∑nip⌊cai+b⌋q
如果a≥c或b≥c则可以先分离一部分,用二项式定理,转化为求p、q更小的函数值。否则过程差不多。要用精彩变换(fjzzq2002©)xk=∑i=0x−1(i+1)k−ik。
SB树

*from https://en.wikipedia.org/wiki/Stern–Brocot_tree
可用于在分数域上二分。
威尔逊定理
4.26
(p−1)!≡p−1(modp)