高阶数论学习指南
典题合集
前置芝士
积性函数
若gcd(a,b)=1,且满足f(ab)=f(a)f(b),则称f(x)为积性函数
[性质]
(1)若f(n),g(n)均为积性函数,则函数h(n)=f(n)g(n)也是积性函数
(2)若f(n)为积性函数,则函数c*f(n)(c是常数)也是积性函数
(3)任何积性函数都能应用线性筛,在O(n)时间内求出1~n项,像素数,欧拉函数等都是 积性函数。
完全积性函数
对于任意正整数a,b,都满足f(ab)=f(a)f(b),则称f(x)为完全积性函数
莫比乌斯函数
[定义]
\(\mu(n)=\begin{cases}1&\quad n=1\\0&\quad n\text{ 含相同质因子}\\(-1)^s&\quad s\text{ 为 }n\text{ 的不同质因子的个数}\\\end{cases}\)
[性质]
公式:\(\sum_{d|n}\mu(d)=[n=1]\) (n=1时,等式=1、n=其他值时,等式=0)
[证明]
。。。。。。
与欧拉函数的联系:\(\sum_{d|n}\mu(d)\frac nd=\varphi(n)\)
[证明]
。。。。。。
[线性筛法求莫比乌斯函数]
时间复杂度:O(n)
const int N = 1000010;
int pr[N], vis[N], cnt;
int mu[N];
void get_mu(int n) {
mu[1] = 1;
for (int i = 2; i <= n; i++) {
if (!vis[i]) {
pr[++cnt] = i;
mu[i] = -1; //i为质数,u(i)=-1
}
for (int j = 1; j <= cnt && (1ll)*i * pr[j] <= n; j++) {
int m = i * pr[j];
vis[m] = 1;
if (i % pr[j] == 0) {
mu[m] = 0;//若i能呗pi整除,则i也包含质因子pi,一定含有相同的质因子
break;
} else {
//mu[i]=-1,mu[m]=1
//mu[i]=1,mu[m]=-1
//mu[i]=0,mu[m]=0
mu[m] = -mu[i];//若i不能被pj整除,则m比i多一个质因子pj
}
}
}
}
狄利克雷卷积
[定义]
f(n),g(n)是两个积性函数,
\((f*g)(n)=\sum_{d|n}f(d)g(\frac{n}{d})=\sum_{d|n}f\left(\frac{n}{d}\right)g(d)\)
[性质]
(1)运算规律
(2)三个常用函数
\(\begin{array}{l}\text{元函数 }\varepsilon(n)=[n=1]\\\text{常数函数 }1(n)=1\\\text{恒等函数}id(n)=n\end{array}\)
和式变换
[性质]
(1)分配律
\(\sum_{k\in K}ca_k=c\sum_{k\in K}a_k\)
(2)结合律
\(\sum_{k\in K}(a_{k}+b_{k})=\sum_{k\in K}a_{k}+\sum_{k\in K}b_{k}\)
(3)交换律
\(\sum_{k\in K}a_{k}=\sum_{p(k)\in K}a_{p(k)}\)(p(k)是指标集的任意一个排列)
(4)替换条件式
\(\sum_{i=1}^{n}\sum_{j=1}^{m}\sum_{d|\gcd(i,j)}d=\sum_{i=1}^{n}\sum_{j=1}^{m}\sum_{d=1}^{n}[d|i][d|j]d\)
(5)替换指标变量
\(\sum_{i=1}^{n}\sum_{j=1}^{m}[\gcd(i,j)=k]=\sum_{ik=1}^{n}\sum_{jk=1}^{m}[\gcd(ik,jk)=k]\)
(6)交换求和次序
\(\sum_{i=1}^{n}\sum_{j=1}^{m}[\gcd(i,j)=k]=\sum_{ik=1}^{n}\sum_{jk=1}^{m}[\gcd(ik,jk)=k]\)
(7)分离变量
\(\sum_{i=1}^{n}\sum_{j=1}^{m}A(i)B(j)=\sum_{i=1}^{n}A(i)\sum_{j=1}^{m}B(j)\)