从头开始学数论(2)
从头开始学数论(2)
前置芝士
欧拉函数
积性函数
对于互质的 \(a, b\) 和一个函数, 如果有 \(f(a\times b) =f(a)\times f(b)\) 就称这个函数是一个积性函数。
完全积性函数
对于任意的 \(a, b\) 和一个函数, 如果有 \(f(a\times b) =f(a)\times f(b)\) 就称这个函数是一个完全积性函数。
常见函数
- \(ϵ(x) = \begin{cases} 1 & x=1 \\ 0 & x \not= 1 \end{cases}\) ,它是完全积性函数。
- \(Id_k(x)=x^k\) ,它是完全积性函数( \(k\) 省略时默认为 \(1\) )。
- \(σ_k(x) = \underset{d|n}{\sum}d^k\) ,它是积性函数( \(k\) 省略时默认为 \(1\) )。
- \(μ(x) = \begin{cases} 1 & x=1 \\ (-1)^k & x=\underset{i=1}{\overset{k}{\prod}} p_i \ (p_i为互异质数) \\ 0 & otherwise \end{cases}\)
从Dirichlet卷积到莫比乌斯函数
Dirichlet卷积
定义
定义 2 个数论函数 \(f,p\),如果有 \(h(x) = \sum_{d|x}f(d)p(\frac{x}{d})\),就称函数 \(h\) 是函数 \(f\) 和函数 \(p\) 的卷积,记为 \(h = f * p\)。可以读作 \(f\) 卷 \(p\)。
这里的 "\(*\)" 是卷积的符号。
卷积也可以这样表示 \(h(n)=(f*g)(n)=\sum_{xy=n}f(x)p(y)\)
性质
- 交换律: \(f*p=p*f\)
证明:
\(f*p=\sum_{d|n}f(d)p(\frac{n}{d}) = \sum_{d|n}f(\frac{n}{d})p(d)=p*f\)
- 结合律: \((f*p)*h=f*(p*h)\)
证明:
\(((f*p)*h)(a)=\sum_{x\times y\times z=a}(f(x)\times p(y))\times h(z)\\ = \sum_{x\times y\times z=a}f(x)\times (p(y)\times h(z))\\ =((f*p)*h)(a)\)
- 分配律: \(f*(x+p)=f*x+f*p\)
证明
显然
- \(ϵ*f=f*ϵ=f\)
证明:
显然
- 如果 \(f\) 和 \(g\) 都是积性函数那么 \(f*g\)都是积性函数。
证明:
设 \(h = f * g\), \(f, g\) 都是积性函数。
设 \(a, b\) 互质。
于是有 \(h(a)=\sum_{d_1|a}f(d_1)g(\frac{a}{d_1})\), \(h(b)=\sum_{d_2|b}f(d_2)g(\frac{b}{d_2})\)
乘起来可以得到
\(h(a)\times h(b)=\sum_{d_1|a}f(d_1)g(\frac{a}{d_1})\times \sum_{d_2|b}f(d_2)g(\frac{b}{d_2})\\
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\sum_{d_1|a,d_2|b}f(d_1\times d_2)g(\frac{ab}{d_1\times d_2})\)
因为 \(a,b\) 互质, 所以\(d_1\times d_2\) 是唯一的,所以原式可以化为 \(\sum_{d_1|a,d_2|b}f(d)g(\frac{ab}{d})\) 就是 \(h(ab)\) 即 \((f*g)(a)\times (f*g)(b) = (f*g)(ab)\)
逆元
定义
如果数论函数\(f\)有, \(f(1)\neq 0\), 若 \(f*g=ϵ\), 就称
\(g\) 是 \(f\) 的 \(dirichlet\) 逆元,记作 \(f^{-1}\) 。
组合数学的美
LUCAS定理
没有什么好说的。
代码用递归实现
inline i64 lucas(i64 n, i64 m) {
return m == 0 ? 1 :
(c(n % p, m % p) * lucas(n / p, m / p) % p);
}
二项式定理
提出系数得到
显而易见,杨辉三角。
由此得到二项式定理:\((a+b)^n=\sum_{i=1}^n C_n^i\times a^i \times b^{n-i}\)。
通过组合数学的角度思考。
在展开 \((x+y)\times(x+y)\times(x+y)\dots(x+y)\) 的过程中,要么选 \(x\) 要么选 \(y\), 所以 \(x^i\times y^{n-i}\)的系数为 \(C_n^i\)。
递推求错放数量
设 \(f_i\) 是满足 \(a_i\) 不在第 \(i\) 位的排列方案。
a. 假设第 \(n\) 个数不在第 \(n\) 位, 假设放在第 \(k\) 位,一共有 \(n\) 位, 所以有 \(n - 1\) 种方案。
b. 考虑第 \(k\) 位的数,它有两种情况:
- 把这个数放到第 \(n\) 位去,于是这两个数就安排好了, 现在还有 \(n - 2\) 个数需要错排,方案数就是 \(f_{n-2}\)
- 把这个数不放到第 \(n\) 位去,于是只有第 \(n\) 位安排好了,还有 \(n - 1\) 个数需要错排,方案数就是 \(f_{n-1}\)
对于 \(a,b\) 操作是先有 \(a\) 再有 \(b\),满足乘法原理
对于 \(b\) 的两个操作则是两种情况,只能选一种, 满足加法原理,所以错排的递推式如下:
容斥原理
<- 文氏图 / 韦恩图 / veen 图
一些关于集合的基本知识
并集: \(A\cup B=D\), 两个集合的公共部分。
交集: \(A\cap B = A + B - D\), 两个集合所有的部分减去它们重叠的部分。
显然, 对于上图 \(G =A + B + C - A\cup B - B\cup C - A\cup C + A\cup B\cup C\)。
容斥原理公式
从上面求 \(G\) 部分的公式可以看出, 容斥原理就是加多了就减,减多了就加的思想。最后求所有部分的并。
使用数学语言描绘一下就是
嗯,有点复杂,可以更简洁一些。