数论基础

数论基础

艾佛森括号

\[[P]=\begin{cases} 1& P\text{ is true}\\ 0& \text{otherwise} \end{cases} \]

数论分块

可以 \(O(\sqrt n)\) 地求形如 \(\sum_{i=1}^n f(i)g(\lfloor\dfrac{n}{i}\rfloor)\) 的式子,

但需要 \(f(i)\) 的前缀和,以及求出 \(g(\lfloor\dfrac{n}{i}\rfloor)\)

因为 \(\lfloor\dfrac{n}{i}\rfloor(1\le i\le n)\) 的取值只有 \(O(\sqrt n)\) 种,大约 \(2\sqrt n\)

分类讨论,证明:

  • \(i\le\sqrt n\) ,此时 \(i\) 只有 \(\sqrt n\) 个,故 \(\lfloor\dfrac{n}{i}\rfloor\) 只有 \(\sqrt n\)
  • \(i>\sqrt n\) ,此时 \(\dfrac{n}{i}<\sqrt n\) ,也只有 \(\sqrt n\)

结论成立。

实现时,只需要求每一个取值块的右端点,

即给 \(l\) ,求最大的 \(r\) 满足 \(\lfloor\dfrac{n}{l}\rfloor=\lfloor\dfrac{n}{r}\rfloor\)

有结论:\(r=\lfloor\frac{n}{\lfloor\frac{n}{l}\rfloor}\rfloor\) ,证明如下:

由于 \(\lfloor\frac{n}{l}\rfloor=\lfloor\frac{n}{r}\rfloor\)

\(\lfloor\frac{n}{l}\rfloor\le\lfloor\frac{n}{r}\rfloor<\lfloor\frac{n}{l}\rfloor+1\)

所以 \(\frac{n}{\lfloor\frac{n}{l}\rfloor+1}<r\le\frac{n}{\lfloor\frac{n}{l}\rfloor+1}\)

需要 \(r\) 最大,所以 \(r=\lfloor\frac{n}{\lfloor\frac{n}{l}\rfloor}\rfloor\)

实现:

for (int l = 1, r; l <= n; l = r + 1) {
    r = n / (n / l);
    // calc (l, r)
}

筛法

埃式筛

一个很易懂的想法:每次将所有数的倍数标记,没有被标记就是质数

这样的复杂度显然调和级数,为 \(O(n\log n)\)

埃式筛就加以改进:指标记质数的倍数

比较显然,唯一分解定理保证每个数都能被筛到

这样的做法是 \(O(n\log\log n)\) 的,证明需要微积分基础,此处略

欧拉筛 / 线性筛

这种做法能做到线性

注意到,埃式筛仍然会重复筛。

线性筛的思想是,每个数只被其最小质因数筛到

这个思想可以看出复杂度为 \(O(n)\)

实现上的区别:

埃式筛是枚举质数 \(i\) ,枚举倍数 \(ij\)

线性筛是枚举 \(j\) ,再枚举质数 \(i\)

const int N = 1e7 + 5;
int vis[N], p[N], cnt;
void get() {
    for (int i = 2; i <= 1e7; i++) {
        if (!vis[i]) p[++cnt] = i;
        for (int j = 1; j <= cnt && i * p[j] <= 1e7; j++) {
            vis[i * p[j]] = 1;
            if (i % p[j] == 0) break;
            /*
            i % p[j] == 0 ,即 i 被之前的 p[j] 筛过了,
            由于 p 中的数是从小到大的
            i 乘上更大素数的结果也被 p[j] 筛过,所以直接 break
            */
        }
    }
}

数论函数

定义

数论上,数论函数(或算术函数)指定义域为正整数,值域为复数的函数

加性函数

对于数论函数 \(f\) ,满足 \(\forall\gcd(a,b)=1,f(a)+f(b)=f(ab)\) ,则 \(f\) 为加性函数

特别地,若 \(f\) 对所有的 \((a,b)\) 都满足 \(f(a)+f(b)=f(ab)\) ,则 \(f\) 为完全加性函数

  • 加性函数一定有 \(f(1)=0\)

常见加性函数

  • \(\omega(n)=\sum_{p\in\mathbb{P}}[p|n]\)\(n\) 本质不同质因子个数
  • \(\Omega(n)=\sum_{p\in\mathbb{P}}\sum_{p^a|n}1(a>0)\)\(n\) 所有质因子个数,完全加性

积性函数

对于数论函数 \(f\) ,满足 \(\forall \gcd(a,b)=1,f(ab)=f(a)f(b)\) ,则 \(f\) 为积性函数

特别地,若 \(f\) 对所有的 \(a,b\) 都满足 \(f(ab)=f(a)f(b)\) ,则 \(f\) 为完全积性函数

  • 积性函数一定满足 \(f(1)=1\)

常见积性函数

  • 元函数 \(\epsilon(n)=[n=1]\) ,完全积性

  • 单位函数 \(\mathbf{1}(n)=1\) ,完全积性

  • 标号函数 \(\mathbf{ID}_k(n)=n^k\) ,完全积性

  • 约数函数 \(\sigma_k(n)=\sum_{d|n} d^k\)

  • 欧拉函数 \(\varphi(n)=\sum_{i=1}^n[\gcd(i,n)=1]\)

  • 莫比乌斯函数

    \[\mu(n)=\left\{ \begin{aligned} 1, & & n=1 \\ (-1)^k & & n=\Pi_{i=0}^k p_i\and\forall i\ne j,a_i\ne a_j \\ 0 & & \text{otherwise} \end{aligned} \right. \]

性质:

\(f,g\) 为积性函数,则

  • \(h(x)=f(x^C)\)
  • \(h(x)=f^C(x)\)
  • \(h(x)=f(x)g(x)\)
  • \(h(x)=(f*g)(x)\) ,即狄利克雷卷积

都是积性函数

\(n=\prod p_i^{a_i}\)

\(F(n)\) 为积性函数,则 \(F(n)=\prod F(p_i^{a_i})\)

\(F(n)\) 为完全积性函数,则 \(F(n)=\prod F(p_i)^{a_i}\)

积性函数筛法

基本上,积性函数都有线性筛法。

为了方便表示,令 \(x=i*p_j\)

筛出积性函数其实只用增加几个部分:初始化(包括 1)、标记时的两种情况

欧拉函数

  1. \(i\;mod\; p_j\ne 0\)\(x,p_j\) 互质,由于是积性函数,

    直接 \(\varphi(x)=\varphi(i)\varphi(p_j+1)\) ,即 \(\varphi(x)=(p_j+1)\varphi(i)\)

  2. \(i\;mod\;p_j=0\)\(i\) 包含了 \(x\) 的所有质因数

    \[\begin{aligned}\varphi(x)&=x\prod_{i=1}^k\dfrac{p_i-1}{p_i}\\ &=p_j\times i\prod_{i=1}^k\dfrac{p_i-1}{p_i}\\&=p_j\times\varphi(i) \end{aligned} \]

莫比乌斯函数

\(\mu(1)=1,\mu(p)=-1\)

  1. \(i\;mod\; p_j\ne 0\)\(\mu(x)=-\mu(i)\)

  2. \(i\;mod\;p_j=0\) ,出现多次,\(\mu(x)=0\)

约数个数

\(d(i)\) 表示 \(i\) 的约数个数, \(num_i\)\(i\) 最小素因子的个数

小学奥数说:若 \(n=\Pi_{i=1}^m p_i^{a_i}\) ,则 \(d(n)=\Pi_{i=1}^m (a_i+1)\)

  1. \(i\;mod\; p_j\ne 0\)\(p_j\)\(x\) 的最小质因数,且第一次出现,所以 \(num_x=1,d_x=2d_i\)

  2. \(i\;mod\;p_j=0\)\(p_j\) 出现次数加一,约数个数用出现次数更新

    所以 \(num_x=num_i+1,d_x=d_i\times\frac{num_x+1}{num_x}\)

约数和

\(f(i)\) 表示 \(i\) 的约数和, \(g_i\) 表示 \(\sum_{j=0}^k p^j\) ,其中 \(p\)\(i\) 最小素因子, \(k\) 为出现次数

小学奥数说:若 \(n=\Pi_{i=1}^m p_i^{a_i}\) ,则 \(f(n)=\prod_{i=1}^m\sum_{j=0}^{a_i}p_i^j\)

  1. \(i\;mod\; p_j\ne 0\) ,最小素因子,次数为 1,\(f_x=f_i*(1+p_j),g_x=1+p_j\)
  2. \(i\;mod\;p_j=0\) ,出现次数加一,\(g_x=g_i*p_j+1,f_x=f_i\times\frac{g_x}{g_i}\)

狄利克雷卷积

看起来高级的名字实际上是定义了一种新的运算,大大简化了表示

两个数论函数 \(f,g\) 的狄利克雷卷积 \(f*g\) 仍是一个数论函数,且 \((f*g)(n)=\sum_{d|n}f(d)g(\frac{n}{d})\)

狄利克雷卷积满足交换律 \(f*g=g*f\) 、结合律 \(f*(g*h)=(f*g)*h\) 分配律 \((f+g)*h=f*h+g*h\)

根据各种函数性质得到:

  1. \(\mu*\mathbf{1}=\epsilon\)

  2. \(\varphi*\mathbf{1}=\mathbf{ID}\)

  3. \(f*\epsilon=f\)

  4. 由 1 式和 2 式

    \[\begin{aligned} \mu*1&=\epsilon\\ \mu*1*\varphi&=\epsilon*\varphi\\ \mu*\mathbf{ID}&=\varphi\\ \sum_{d|n}\mu(d)\dfrac{n}{d}&=\varphi(n) \end{aligned} \]

    两边同时除以 \(n\) ,得到了巧妙的式子:

    \[\dfrac{\varphi(n)}{n}=\sum_{d|n}\dfrac{\mu(d)}{d} \]
  5. 莫比乌斯反演定理可以用狄利克雷卷积证明

    即证明 \(F=f*1\Rightarrow f=\mu*F\)

    \(F\) 带入,\(f=\mu*F=\mu*(f*1)\) ,由交换律和结合律,\(f=(\mu*1)*f=f*\epsilon=f\) ,得证

同余等价类

在模意义下,每一个数都是一个同于等价类。

比如,模 3 意义下,1 表示所有除以 3 余 1 的整数,即 \(\{1,4,7,\cdots,\}\)

在模意义下,所有非负整数都可以被分为若干同余等价类

剩余系

\(p\) 的剩余系是 \(\{0,1,2,\cdots,p-1\}\) ,即小于 \(p\) 的非负整数

这个集合包含了所有 \(\;mod\;p\) 的数,集合中每一个数都代表了一个同于等价类

这个集合称为模 \(p\) 的剩余系,记作 \(Z_p\)

缩系

缩系,又称简化剩余系

即在模 \(p\) 的剩余系中,与 \(p\) 互质的数的集合,称为 \(p\) 的缩系,记为 \(Z_p^*\)

\(p=6\) 时,\(Z_p^*=\{1,5\}\)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值