现在我们想求:
∑ i = 1 n ⌊ n i ⌋ \sum_{i=1}^n {\lfloor\frac{n}{i}\rfloor} i=1∑n⌊in⌋
不妨先考虑 ⌊ n i ⌋ \lfloor \frac n i\rfloor ⌊in⌋的结果.
{ i ≤ n , i 只 有 n 种 可 能 , 所 以 ⌊ n i ⌋ 也 只 有 n 种 可 能 i > n , 虽 然 i 有 n − n 种 可 能 , 但 是 ⌊ n i ⌋ ≤ n 所 以 ⌊ n i ⌋ 也 只 有 n 中 可 能 \begin{cases} i \leq \sqrt{n},i只有\sqrt{n}种可能,所以\lfloor \frac n i \rfloor 也只有 \sqrt n 种可能 \\i \gt \sqrt n ,虽然i有 n-\sqrt n种可能,但是\lfloor \frac n i \rfloor \le \sqrt n 所以\lfloor \frac n i \rfloor也只有\sqrt n 中可能 \end{cases} { i≤n,i只有n种可能,所以⌊in⌋也只有n种可能i>n,虽然i有n−n种可能,但是⌊in⌋≤n所以⌊in⌋也只有n中可能
既然如此,我们不妨根据 ⌊ n i ⌋ \lfloor \frac n i \rfloor ⌊in⌋ 分块,然后每一块统一计算大小,这样我们在 O ( n ) O\left ( \sqrt n \right ) O(n) 的复杂度下求解了.
积 性 函 数 f ( x ) 满 足 : 任 何 x , y , 如 果 g c d ( x , y ) = 1 , 则 f ( x y ) = f ( x ) f ( y ) 积性函数f(x)满足: 任何x,y,如果 gcd(x,y) =1,则 f( xy) = f(x)f(y) 积性函数f(x)满足:任何x,y,如果gcd(x,y)=1,则f(xy)=f(x)f(y)
如 果 f ( x ) , g ( x ) 为 积 性 函 数 , p 为 常 数 , 则 : 如果f(x),g(x)为积性函数,p为常数,则: 如果f(x),g(x)为积性函数,p为常数,则:
h ( x ) = f p ( x ) h ( x ) = f ( x p ) h ( x ) = f ( x ) g ( x ) h ( x ) = ∑ d ∣ x f ( d ) g ( x d ) \begin{aligned} h(x) &= f^p(x)\\ h(x) &= f(x^p)\\ h(x) &= f(x)g(x)\\ h(x) &= \sum_{d|x} f(d)g(\frac x d) \end{aligned} h(x)h(x)h(x)h(x)=fp(x)=f(xp)=f(x)g(x)=d∣x∑f(d)g(dx)
h ( x ) 均 为 积 性 函 数 h(x)均为积性函数 h(x)均为积性函数
单 数 函 数 : ϵ ( n ) = [ n = = 1 ] ; 恒 等 函 数 : i d ( n ) = n ; 常 数 函 数 : 1 ( n ) = 1 ; 除 数 函 数 : σ k ( n ) = ∑ d ∣ n d k ; 如 果 k = 0 , 可 简 写 为 d ( n ) 欧 拉 函 数 : ϕ ( n ) = ∑ i = 1 n [ g c d ( i , j ) = = 1 ] ; 莫 比 乌 斯 函 数 : u ( n ) = { 1 n = 1 ( − 1 ) k k 为 n 的 不 同 素 因 子 个 数 , 且 每 个 素 因 子 只 拥 有 一 个 0 o t h e r w i s e \begin{aligned} 单数函数: \epsilon (n) &= [n==1];\\ 恒等函数: id(n) &= n;\\ 常数函数 :1(n) &= 1;\\ 除数函数: \sigma_{k}(n) &= \sum_{d|n} d^k;如果k=0,可简写为d(n)\\ 欧拉函数: \phi(n) &= \sum_{i=1}^n [gcd(i,j)==1];\\ 莫比乌斯函数:u(n) &= \begin{cases} 1 & n=1\\ (-1)^k & k为n的不同素因子个数,且每个素因子只拥有一个\\ 0 & otherwise\\ \end{cases} \end{aligned} 单数函数:ϵ(n)恒等函数:id(n)常数函数:1(n)除数函数:σk(n)欧拉函数:ϕ(n)莫比乌斯函数:u(n)=[n==1];=n;=1;=d∣n∑dk;如果k=0,可简写为d(n)=i=1∑n[gcd(i,j)==1];=⎩⎪⎨⎪⎧1(−1)k0n=1k为n的不同素因子个数,且每个素因子只拥有一个otherwise
对 于 数 论 函 数 f ( x ) , g ( x ) : 对于数论函数f(x),g(x): 对于数论函数f(x),g(x):
( f ∗ g ) n = ∑ d ∣ n f ( d ) g ( ⌊ n d ⌋ ) (f*g)_{n} = \sum_{d|n} f(d)g(\lfloor \frac n d \rfloor) (f∗g)n=d∣n∑f(d)g(⌊dn⌋)
卷 积 满 足 交 换 律 , 结 合 律 . 卷积满足交换律,结合律. 卷积满足交换律,结合律.
ϵ = u ∗ 1 d = 1 ∗ 1 σ = i d ∗ 1 ϕ = i d ∗ u \begin{aligned} \epsilon &=u * 1\\ d &= 1 * 1\\ \sigma &= id * 1\\ \phi &= id * u \end{aligned} ϵdσϕ=u∗1=1∗1=id∗1=id∗u
u ( n ) = { 1 n = 1 ( − 1 ) k k 为 n 的 不 同 素 因 子 个 数 , 且 每 个 素 因 子 只 拥 有 一 个 0 o t h e r w i s e u(n) = \begin{cases} 1 & n=1\\ (-1)^k & k为n的不同素因子个数,且每个素因子只拥有一个\\ 0 & otherwise\\ \end{cases} u(n)=⎩⎪⎨⎪⎧1(−1)k0n=1k为n的不同素因子个数,且每个素因子只拥有一个otherwise
性 质 : 莫 比 乌 斯 函 数 不 仅 是 积 性 函 数 , 且 满 足 ∑ d ∣ n u ( d ) = { 1 n = 1 0 n ≠ 1 \begin{aligned}性质: 莫比乌斯函数不&仅是积性函数,且满足\\ \sum_{d|n} u(d) &= \begin{cases} 1 & n=1\\ 0 & n \neq 1\\ \end{cases}\\ \end{aligned} 性质:莫比乌斯函数不d∣n∑u(d)仅是积性函数,且满足={ 10n=1n=1
这 个 函 数 在 反 演 中 会 很 常 见 , 经 常 性 的 需 要 求 前缀和 o r O(1)查询 , 我 们 可 以 用 素 数 筛 O ( n ) 预 处 理 . 准 确 的 来 说 , 所 有 的 积 性 函 数 都 可 以 通 过 素 数 筛 O ( n ) 求 出 . 但 不 同 的 积 性 函 数 的 转 移 略 有 不 同 , 这个函数在反演中会很常见,经常性的需要求\ \textbf{前缀和} \ or \ \textbf{O(1)查询},我们可以用素数筛O(n)预处理.\\ ~\\ 准确的来说,所有的积性函数都可以通过素数筛O(n)求出.但不同的积性函数的转移略有不同, 这个函数在反演中会很常见,经常性的需要求 前缀和 or O(1)查询,我们可以用素数筛O(n)预处理. 准确的来说,所有的积性函数都可以通过素数筛O(n)求出.但不同的积性函数的转移略有不同,
void getMu() {
mu[1] = 1;
for (int i = 2; i <= n; ++i) {
if (!flg[i]) p[++tot] = i, mu[i] = -1;
for (int j = 1; j <= tot && i * p[j] <= n; ++j) {
flg[i * p[j]] = 1;
if (i % p[j] == 0) {
mu[i * p[j]] = 0; // 不同的积性函数可以这里会有差异.
break;
}
mu[i * p[j]] = -mu[i];
}
}
}
若 f ( n ) = ∑ d ∣ n g ( d ) , 则 g ( n ) = ∑ d ∣ n u ( d ) f ( ⌊ n d ⌋ ) 若f(n) = \sum_{d|n} g(d), \\ 则g(n) = \sum_{d|n} u(d)f(\lfloor \frac n d \rfloor) 若f(n)=d∣n∑g(d),则g(n)=d∣n∑u(d)f(⌊dn⌋)
证明:
f = g ∗ 1 两 边 同 时 卷 积 : f ∗ u = g ∗ 1 ∗ u 利 用 结 合 律 : f ∗ u = g \begin{aligned}f &= g*1\\ 两边同时卷积:\qquad f*u &=g*1*u\\ 利用结合律: \qquad f*u &=g \end{aligned} f两边同时卷积:f∗u利用结合律:f∗u=g∗1=g∗1∗u=g
[ g c d ( i , j ) = 1 ] ⟺ ∑ d ∣ g c d ( i , j ) u ( d ) 通 过 上 面 u ( n ) 的 定 义 , 显 然 这 个 式 子 是 成 立 的 [gcd(i,j)=1] \iff \sum_{d|gcd(i,j)} u(d) \\ ~\\ 通过上面u(n)的定义,显然这个式子是成立的 [gcd(i,j)=1]⟺d∣gcd(i,j)∑u(d) 通过上面u(n)的定义,显然这个式子是成立的