数论函数
取整函数
定义
对于实数 (x),记 (⌊x⌋) 为不超过 (x) 的最大整数。
(lfloor x floor) 也是满足如下关系的唯一整数:
(lfloor x floor ≤x<lfloor x floor+1)
对于正整数 (n),(1) 到 (n) 中 (d) 的倍数有 (⌊frac{n}{d}⌋) 个
性质1
对于任意的 (x) 与正整数 (a),(b),我们均有:
[⌊⌊frac{x}{a}⌋/b⌋ = ⌊frac{x}{ab}⌋ ]
性质2
(⌊frac{n}{d}⌋) 可能的取值不超过 2√n 种。
证明
对于正整数 (n),考虑当 (1≤d≤n) 时,(⌊frac{n}{d}⌋) 的不同的取值个数。
若 (d≤sqrt n),则能得到的 (⌊frac{n}{d}⌋) 只有不超过 (sqrt n) 种。
若 (d>sqrt n),则 (⌊frac{n}{d}⌋≤frac{n}{d}<sqrt n),又因为 (⌊frac{n}{d}⌋)是正整数,故此时
可能的取值也不超过 (sqrt n) 种。
综上,(⌊frac{n}{d}⌋) 可能的取值不超过 (2sqrt n) 种。
调和数
可以推出:
素数计数函数
定义&素数定理
令素数计数函数 (pi(n)) 表示不超过 (n) 的素数个数。我们有如下的素数定理:
推论:
(n) 附近的素数密度近似是 (frac{1}{ln n}) 。
第 (n) 个素数 (p_{n}sim n ln n) 。
积性函数
定义
设 (f) 是数论函数,若对任意互质的正整数 (a, b) ,都有 (f(ab) = f(a)f(b)) ,则称 $f $ 是积性函数。
若对任意的正整数 (a, b) ,都有 (f(ab) = f(a)f(b)) ,则称 $ f $ 是完全积性的。
单位函数
定义
单位函数 (epsilon (n)) 定义为:
除数函数
定义
除数函数 (sigma_{k}) 用来表示 (n) 的因子的 (k) 次方之和:
约数个数 (sigma_{0}(n)) 常记为 (d(n)) ,约数和 (sigma_{1}(n)) 常记为 (sigma(n)) 。
除数函数都是积性函数。
(Euler) 函数
定义:
(Euler) 函数 (φ(n)) 表示不超过 (n) 且与 (n) 互质的正整数的个数。
由 (n) 的标准分解并结合容斥原理,我们可以得到 (Euler) 函数的表达式:$$varphi(n)=ncdotprod_{i=1}^{s}(1-frac{1}{p_{i}})$$
其中 (n = p_{1}^{alpha_1}p_{2}^{alpha_2} · · · p_{s}^{alpha_s}) 是 (n) 的标准分解。
由此易见 (Euler) 函数是积性函数。
性质1
对于任意 $ n(,)Euler$ 函数有如下性质:
$$n=sum_{d|n}varphi(d)$$
证明1
将 (1) 到 (n) 中的所有整数按与 (n) 的最大公约数分类。
若 (gcd(n, i) = d),那么 (gcd(frac{n}{d} , frac{i}{d} ) = 1) 。而又 (frac{i}{d}) 是不超过 (frac{n}{d}) 的整数,故这样的 (i) 有 (φ(frac{n}{d})) 个。
考虑所有 (d | n),我们也就考虑到了所有 (1) 到 (n) 之间的 (n) 个整数,因此有$$n=sum_{d|n}varphi(frac{n}{d})=sum_{d|n}varphi(d)$$即:
证明2
可以先证明 (f(n)=sum_{d|n}varphi (d)) 为积性函数,然后再证对于质数 (p),有
可以通过定义与等比数列求和得出,然后结论易得
小技巧,研究一个积性函数,先研究其在质数的幂时的表现。
性质2
(p|n) ,则 (varphi(np)=varphi(n)p)。
使用时有:
(varphi(p^k)=(p-1)p^{(k-1)})
代码中:
phi[t]=phi[i]*(i%p[j]?p[j]-1:p[j]);
(Mobius) 函数
莫比乌斯函数的定义:
第一次看到这个时我很懵逼,感觉这个函数不那么自然,不知道为什么有这个函数……
但实际上,它是常函数 (1) 的逆,即 $mu * 1=epsilon $。
而具体推导可以看这里。(其实好像算是一种容斥?)
而这满足了进行莫比乌斯反演的需要。
积性函数的逆:
若 (f*g=epsilon),则 (f) 与 (g) 互逆。
莫比乌斯反演
现有关系:
即:
如果我们易求 (f),那么就可以轻松求出 (F),反之,若 (F) 易求,我们如何求出 (f)?
倍数的莫比乌斯反演:
若:
则:
又作:
若:
则:
起初我对这式子不是很理解,觉得不是有 (infty) 项吗,怎么算?
但实际上在我们的运用过程中 (f(d)) 通常都是有限项的,如(f(d)=sum_{i=1}^{n}sum_{j=1}^{m}[gcd(i,j)=d]),而这种形式好像也更常用
技巧:
证明:
由 (mu * 1=epsilon),
即 (sum_{d|n}mu(d)=[n=1]),
将 (n) 替换成 (gcd(i,j)) 就是上式了。
然后 (d|gcd(x,y)) 可以转化为 (d|x,d|y),然后可以枚举倍数来求,
然后经常可以枚举 (d) 来根据 (i),(j) 的贡献来分块求答案。
主要思想:
使用“交换合式顺序”和“改变枚举变量”来化简。
常见反演:
设 (f(d)=sum_{i=1}^{n}sum_{j=1}^{m}[gcd(i,j)=d])。
则 (F(x)) 易求,那么就可以反演求 (f(d)) 了。(当然除以 (d) 在利用上面的 (gcd) 变换的技巧也可以得到)
当然,这类题有些也可以用 (varphi) 来化简,利用 (varphi*1=id) 的性质,将 (gcd) 代换成 (n) 就行了。
(varphi) 与 (mu) 的关系:
关于 (d(n)) 的有力结论:
证明:
设 (nm=prod p_i^{x_i}),(n=prod p_i^{y_i}),则 (m=prod p_i^{x_i-y_i})。
设 (i = p_1^{a_1}cdot p_2^{a_2}cdot p_3^{a_3}cdots p_k^{a_k}),(j = p_1^{b_1}cdot p_2^{b_2}cdot p_3^{b_3}cdots p_k^{b_k})。
若 (gcd(i,j)==1),则若 (a_i=0),则 (b_i) 有 (x_i-y_i+1) 种取值,若 (b_i=0),则 (a_i) 有 (y_i+1) 种取值,(a_i=b_i=0) 的情况重复了,所以一共有 (x_i+1) 种取值。
故右式的值为 (prod x_i+1)。而这与左式的形式一致。
orz Sengxian 学长(看了一圈就他的一眼看懂了。。)。
数论分块
具体就不写了,简要记录证明思路,算了,也不写了。