版权声明:转载必须注明原文链接,并且每50字(半角,向上取整)就要注明一次,侵权必究 https://blog.csdn.net/myjs999/article/details/89431517
主要写于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
可用于在分数域上二分。