-
可积函数
若 ∀ g c d ( m , n ) = 0 满 足 f ( a ∗ b ) = f ( a ) × f ( b ) 且 ∃ f ( n ) ≠ 0 则 称 f ( x ) 为 积 性 函 数 若\forall gcd(m,n)=0 \ \ \ 满足f(a*b)=f(a) \times f(b) 且\ \exists f(n) \ne 0 则称f(x)为积性函数 若∀gcd(m,n)=0 满足f(a∗b)=f(a)×f(b)且 ∃f(n)=0则称f(x)为积性函数
-
可积函数性质
-
$F(n)=\sum_{d|n}f(d)\$ 一定是可积函数
-
若 F ( n ) = ∑ d ∣ n f ( d ) 则 有 F ( n ) = ( 1 + f ( p 1 ) + f ( p 1 2 ) + ⋯ + f ( p 1 α 1 ) ) ( 1 + f ( p 2 ) + f ( p 2 2 ) + ⋯ + f ( p 2 α 2 ) ) ⋯ 若F(n)=\sum_{d|n}f(d)\\ 则有F(n)=(1+f(p_1)+f({p_1}^2)+\cdots+f(p_1^{\alpha1}))(1+f(p_2)+f({p_2}^2)+\cdots+f(p_2^{\alpha2}))\cdots 若F(n)=d∣n∑f(d)则有F(n)=(1+f(p1)+f(p12)+⋯+f(p1α1))(1+f(p2)+f(p22)+⋯+f(p2α2))⋯
-
-
线性筛
-
关键代码
for(long j = 0 ; j < num_prime && i * prime[j] < N ; j ++)关键处1 { isNotPrime[i * prime[j]] = 1; if( !(i % prime[j] ) ) //关键处2 break; }
-
每个数会被它最小的质数筛去
-
筛欧拉函数
-
欧拉函数定义为n与内与其互质的数的个数,特别的 ϕ ( 1 ) = 1 \phi(1)=1 ϕ(1)=1
-
ϕ ( n ) = n ∗ ∏ i = 1 k p i − 1 p i \phi(n)=n*\prod_{i=1}^{k}\frac{p_i-1}{p_i} ϕ(n)=n∗∏i=1kpipi−1
-
如何筛呢
因 为 显 然 有 当 n % p 1 ≠ 0 时 ϕ ( n ) = p 1 ∗ n p 1 ∗ ϕ ( n p 1 ) 当 n % p = = 0 时 ϕ ( n ) = ( p 1 − 1 ) ∗ n p 1 ∗ ϕ ( n p 1 ) 那 么 第 一 次 如 果 ( ! ( i % p r i m e [ j ] ) ) 就 乘 ( p r i m e [ j ] − 1 ) 否 则 乘 ( p r i m e [ j ] ) 因为显然有\\ 当n\%p_1\ne0时\\ \phi(n)=p_1*\frac{n}{p_1}*\phi({\frac{n}{p_1}})\\ 当n\%p==0时\\ \phi(n)=(p_1-1)*\frac{n}{p_1}*\phi({\frac{n}{p_1}})\\ 那么第一次如果(!(i\%prime[j]))就乘(prime[j]-1) 否则乘(prime[j]) 因为显然有当n%p1=0时ϕ(n)=p1∗p1n∗ϕ(p1n)当n%p==0时ϕ(n)=(p1−1)∗p1n∗ϕ(p1n)那么第一次如果(!(i%prime[j]))就乘(prime[j]−1)否则乘(prime[j])
-
-
筛莫比乌斯函数
- 如果 % p r i m e [ i ] = = 0 \%prime[i]==0 %prime[i]==0 那么 μ ( i ∗ p r i m e [ j ] ) \mu(i*prime[j]) μ(i∗prime[j])显然等于0,否则等于 − μ ( i ) -\mu(i) −μ(i)
-
筛约数个数
-
设 n = p 1 α 1 ⋯ p k α k 设n=p_1^{\alpha1}\cdots p_k^{\alpha k} 设n=p1α1⋯pkαk
f a c ( n ) = ( α 1 + 1 ) ∗ ( α 2 + 1 ) ∗ ⋯ ∗ ( α k + 1 ) fac(n)=(\alpha_ 1 +1)*(\alpha_2 +1)*\cdots*(\alpha _k+1) fac(n)=(α1+1)∗(α2+1)∗⋯∗(αk+1)
记录最小质因数当前的次数即可
-
-
筛约数和
-
设 n = p 1 α 1 ⋯ p k α k 设n=p_1^{\alpha1}\cdots p_k^{\alpha k} 设n=p1α1⋯pkαk
s u m ( n ) = ∑ j = 0 α 1 p 1 j ∗ ⋯ ∗ ∑ j = 0 α k p k j sum(n)=\sum_{j=0}^{\alpha _1}p_1^j*\cdots*\sum_{j=0}^{\alpha _k}p_k^j sum(n)=∑j=0α1p1j∗⋯∗∑j=0αkpkj
记录最小质因数当前次方之后是多少
-
还有一个可能在别的地方用的 d ( i , j ) = = ∑ x ∣ i ∑ y ∣ j [ g c d ( i , j ) = = 1 ] d(i,j)==\sum_{x|i}\sum_{y|j}[gcd(i,j)==1] d(i,j)==∑x∣i∑y∣j[gcd(i,j)==1]
-
-
-
莫比乌斯函数定义
-
$若d=0\ 则\ \mu(d)=0 $
-
若 d = p 1 ∗ p 2 ∗ p 3 ∗ ⋯ ∗ p n 其 中 p i 为 互 异 的 质 数 , 则 μ ( d ) = ( − 1 ) n 若d=p_1*p_2*p_3* \cdots *p_n \ 其中p_i为互异的质数,则 \mu(d)=(-1)^n 若d=p1∗p2∗p3∗⋯∗pn 其中pi为互异的质数,则μ(d)=(−1)n
-
其 他 情 况 μ ( d ) = 0 其他情况\mu(d)=0 其他情况μ(d)=0
-
-
莫比乌斯函数性质
- Σ d ∣ n μ ( d ) = { 1 , n = 1 0 , n ≠ 1 \Sigma_{d|n} \mu(d) =\begin{cases} 1,n=1 \\ 0,n\ne1 \\ \end{cases} Σd∣nμ(d)={1,n=10,n=1
- 可 用 欧 拉 函 数 可 进 行 代 换 ∑ d ∣ n ϕ ( d ) = n 可用欧拉函数可进行代换 \sum_{d|n}\phi(d)=n 可用欧拉函数可进行代换∑d∣nϕ(d)=n
- 给定一个数列a和一个数列x,数列中与x互素的数的个数为 $\Sigma_{d|n}\mu(d)cnt_d $ c n t d cnt_d cntd指的是数列中有多少数是d的倍数
- 一个数的因子数是logn级别的(显然)
- ∑ d ∣ n μ ( d ) ∗ ⌊ n d ⌋ = ϕ ( n ) \sum_{d|n}\mu(d)*\lfloor{\frac{n}{d}}\rfloor=\phi(n) ∑d∣nμ(d)∗⌊dn⌋=ϕ(n)
- 反演定理 ,一般不用,但是可以和第2大点产生联系
若 有 F ( n ) = ∑ d ∣ n f ( d ) 则 有 f ( n ) = ∑ d ∣ n μ ( d ) ∗ F ( ⌊ n d ⌋ ) 若有F(n)=\sum_{d|n}f(d)\\ 则有f(n)=\sum_{d|n}\mu(d)*F(\lfloor\frac{n}{d}\rfloor) 若有F(n)=d∣n∑f(d)则有f(n)=d∣n∑μ(d)∗F(⌊dn⌋)
-
一般都不会使用反演公式的, 一 般 利 用 [ g c d ( i , j ) = = 1 ] = Σ d ∣ g c d ( i , j ) μ ( d ) 一般利用[gcd(i,j)==1]=\Sigma_{d|gcd(i,j)}\mu(d) 一般利用[gcd(i,j)==1]=Σd∣gcd(i,j)μ(d)
-
例一:求 ∑ i = 1 n ∑ j = 1 m [ g c d ( i , j ) = = 1 ] \sum_{i=1}^{n}\sum_{j=1}^m[gcd(i,j)==1] ∑i=1n∑j=1m[gcd(i,j)==1]
= ∑ i = 1 n ∑ j = 1 m ∑ d ∣ g c d ( i , j ) μ ( d ) = ∑ d = 1 n μ ( d ) ∗ ⌊ n d ⌋ ∗ ⌊ m d ⌋ =\sum_{i=1}^n\sum_{j=1}^m\sum_{d|gcd(i,j)}\mu(d)\\ =\sum_{d=1}^n\mu(d)*\lfloor{\frac{n}{d}}\rfloor*\lfloor{\frac{m}{d}}\rfloor\\ =i=1∑nj=1∑md∣gcd(i,j)∑μ(d)=d=1∑nμ(d)∗⌊dn⌋∗⌊dm⌋
例二:求 ∑ i = 1 n ∑ j = 1 m [ g c d ( i , j ) = = k ] \sum_{i=1}^{n}\sum_{j=1}^m[gcd(i,j)==k] ∑i=1n∑j=1m[gcd(i,j)==k]
= ∑ i = 1 ⌊ n k ⌋ ∑ j = 1 ⌊ m k ⌋ [ g c d ( i , j ) = = 1 ] =\sum_{i=1}^{\lfloor {\frac{n}{k}} \rfloor}\sum_{j=1}^{\lfloor {\frac{m}{k}} \rfloor}[gcd(i,j)==1] =i=1∑⌊kn⌋j=1∑⌊km⌋[gcd(i,j)==1]
例三:求 ∑ i = 1 n ∑ j = 1 m ∗ i ∗ j ∗ [ g c d ( i , j ) = = k ] \sum_{i=1}^{n}\sum_{j=1}^m*i*j*[gcd(i,j)==k] ∑i=1n∑j=1m∗i∗j∗[gcd(i,j)==k]
= ∑ i = 1 ⌊ n k ⌋ ∑ j = 1 ⌊ m k ⌋ ∗ i ∗ k ∗ j ∗ k ∗ [ g c d ( i , j ) = = 1 ] = ∑ i = 1 ⌊ n k ⌋ ∑ j = 1 ⌊ m k ⌋ ∗ i ∗ k ∗ j ∗ k ∗ ∑ d ∣ g c d ( i , j ) μ ( d ) = k 2 ∑ d = 1 n μ ( d ) ∗ d ∗ d ∗ ∑ i = 1 ⌊ n k ∗ d ⌋ ∗ i ∗ ∑ j = 1 ⌊ m k ∗ d ⌋ ∗ j ( 这 一 步 是 因 为 本 身 是 乘 d 的 倍 数 的 , 把 d 除 掉 就 是 等 差 数 列 了 ) =\sum_{i=1}^{\lfloor {\frac{n}{k}} \rfloor}\sum_{j=1}^{\lfloor {\frac{m}{k}} \rfloor}*i*k*j*k*[gcd(i,j)==1]\\ =\sum_{i=1}^{\lfloor {\frac{n}{k}} \rfloor}\sum_{j=1}^{\lfloor {\frac{m}{k}} \rfloor}*i*k*j*k*\sum_{d|gcd(i,j)}\mu(d)\\ =k^2\sum_{d=1}^{n}\mu(d)*d*d*\sum_{i=1}^{\lfloor {\frac{n}{k*d}} \rfloor}*i*\sum_{j=1}^{\lfloor {\frac{m}{k*d}} \rfloor}*j (这一步是因为本身是乘d的倍数的,把d除掉就是等差数列了) =i=1∑⌊kn⌋j=1∑⌊km⌋∗i∗k∗j∗k∗[gcd(i,j)==1]=i=1∑⌊kn⌋j=1∑⌊km⌋∗i∗k∗j∗k∗d∣gcd(i,j)∑μ(d)=k2d=1∑nμ(d)∗d∗d∗i=1∑⌊k∗dn⌋∗i∗j=1∑⌊k∗dm⌋∗j(这一步是因为本身是乘d的倍数的,把d除掉就是等差数列了)
例四:求 ∑ i = 1 n ∑ j = 1 m g c d ( i , j ) \sum_{i=1}^{n}\sum_{j=1}^{m}gcd(i,j) ∑i=1n∑j=1mgcd(i,j)
= ∑ i = 1 n ∑ j = 1 m ∑ d ∣ g c d ( i , j ) ϕ ( d ) = ∑ d = 1 n ϕ ( d ) ∗ ⌊ n d ⌋ ∗ ⌊ m d ⌋ =\sum_{i=1}^{n}\sum_{j=1}^{m}\sum_{d|gcd(i,j)}\phi(d)\\ =\sum_{d=1}^n\phi(d)*{\lfloor {\frac{n}{d}} \rfloor}*{\lfloor {\frac{m}{d}} \rfloor} =i=1∑nj=1∑md∣gcd(i,j)∑ϕ(d)=d=1∑nϕ(d)∗⌊dn⌋∗⌊dm⌋
例五:求
∑
i
=
1
n
∑
j
=
1
m
l
c
m
(
i
,
j
)
\sum_{i=1}^{n}\sum_{j=1}^{m}lcm(i,j)
∑i=1n∑j=1mlcm(i,j)
=
∑
i
=
1
n
∑
j
=
1
m
i
∗
j
g
c
d
(
i
,
j
)
=
∑
d
=
1
n
∑
i
=
1
n
∑
j
=
1
m
i
∗
j
d
∗
[
(
g
c
d
(
i
,
j
)
=
=
d
]
=
∑
d
=
1
n
d
∑
i
=
1
⌊
n
d
⌋
∑
j
=
1
m
d
⌋
i
∗
j
∗
[
(
g
c
d
(
i
,
j
)
=
=
1
]
=
∑
d
=
1
n
d
∑
i
=
1
⌊
n
d
⌋
∑
j
=
1
⌊
m
d
⌋
i
∗
j
∗
∑
k
∣
g
c
d
(
i
,
j
)
μ
(
k
)
=
∑
d
=
1
n
d
∑
k
=
1
⌊
n
d
⌋
μ
(
k
)
∗
k
2
∑
i
=
1
⌊
n
d
k
⌋
i
∑
j
=
1
⌊
m
d
k
⌋
j
=\sum_{i=1}^{n}\sum_{j=1}^{m}\frac{i*j}{gcd(i,j)}\\ =\sum_{d=1}^{n}\sum_{i=1}^{n}\sum_{j=1}^{m}\frac{i*j}{d}*[(gcd(i,j)==d]\\ =\sum_{d=1}^{n} d \sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\frac{m}{d}\rfloor}i*j*[(gcd(i,j)==1]\\ =\sum_{d=1}^{n} d \sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{d}\rfloor}i*j* \sum_{k|gcd(i,j)}\mu(k)\\ =\sum_{d=1}^{n} d \sum_{k=1}^{\lfloor\frac{n}{d}\rfloor} \mu(k)*k^2\sum_{i=1}^{\lfloor\frac{n}{dk}\rfloor}i\sum_{j=1}^{\lfloor\frac{m}{dk}\rfloor}j
=i=1∑nj=1∑mgcd(i,j)i∗j=d=1∑ni=1∑nj=1∑mdi∗j∗[(gcd(i,j)==d]=d=1∑ndi=1∑⌊dn⌋j=1∑dm⌋i∗j∗[(gcd(i,j)==1]=d=1∑ndi=1∑⌊dn⌋j=1∑⌊dm⌋i∗j∗k∣gcd(i,j)∑μ(k)=d=1∑ndk=1∑⌊dn⌋μ(k)∗k2i=1∑⌊dkn⌋ij=1∑⌊dkm⌋j
可以
⌊
n
d
⌋
\lfloor\frac{n}{d}\rfloor
⌊dn⌋分一个块
⌊
n
d
k
⌋
\lfloor\frac{n}{dk}\rfloor
⌊dkn⌋再分一个块可做
不过还有更神奇的代换方式令
T
=
d
k
,
f
(
x
)
=
∑
i
=
1
x
i
T=dk,f(x)=\sum_{i=1}^xi
T=dk,f(x)=∑i=1xi,则有
=
∑
d
=
1
n
d
∑
k
=
1
⌊
n
d
⌋
μ
(
k
)
∗
k
2
∗
f
(
⌊
n
T
⌋
)
∗
f
(
⌊
m
T
⌋
)
枚
举
T
=
∑
T
=
1
n
f
(
⌊
n
T
⌋
)
∗
f
(
⌊
m
T
⌋
)
∗
∑
d
∣
T
d
∗
μ
(
T
d
)
∗
(
T
d
)
2
d
和
T
d
代
换
一
下
=
∑
T
=
1
n
f
(
⌊
n
T
⌋
)
∗
f
(
⌊
m
T
⌋
)
∗
∑
d
∣
T
d
∗
μ
(
d
)
∗
T
观
察
∑
d
∣
T
d
∗
μ
(
d
)
当
a
⊥
b
∑
d
∣
a
d
∗
μ
(
d
)
与
∑
d
∣
b
d
∗
μ
(
d
)
对
∑
d
∣
a
∗
b
d
∗
μ
(
d
)
贡
献
独
立
∴
f
(
a
∗
b
)
=
f
(
a
)
∗
f
(
b
)
且
∴
如
果
a
为
质
数
f
(
a
)
=
1
−
a
当
a
%
b
=
=
0
∵
a
里
的
元
素
和
b
里
的
元
素
相
乘
,
μ
不
等
于
0
的
都
在
a
里
了
显
然
f
(
a
∗
b
)
=
f
(
a
)
∑
d
∣
T
d
∗
μ
(
d
)
就
可
求
了
,
做
前
缀
和
的
时
候
把
T
乘
上
就
好
了
分
个
块
,
整
个
式
子
就
可
以
求
了
=\sum_{d=1}^n d \sum_{k=1}^ {\lfloor \frac{n}{d} \rfloor} \mu(k) *k^2 * f({\lfloor \frac{n}{T} \rfloor}) * f({\lfloor \frac{m}{T} \rfloor})\\ 枚举T\\ =\sum_{T=1}^n f({\lfloor \frac{n}{T} \rfloor}) * f({\lfloor \frac{m}{T} \rfloor}) *\sum_{d|T} d *\mu(\frac{T}{d})*{(\frac{T}{d})}^2\\ d和\frac{T}{d}代换一下\\ =\sum_{T=1}^n f({\lfloor \frac{n}{T} \rfloor}) * f({\lfloor \frac{m}{T} \rfloor}) *\sum_{d|T} d *\mu(d)*T\\ 观察\sum_{d|T} d *\mu(d)\\ 当a\perp b \\ \sum_{d|a} d *\mu(d) 与 \sum_{d|b} d *\mu(d) 对 \sum_{d|a*b} d *\mu(d)贡献独立\\ \therefore f(a*b)=f(a)*f(b)\\ 且\therefore 如果a为质数\ f(a)=1-a\\ 当a\%b==0\\ \because a里的元素和b里的元素相乘,\mu不等于0的都在a里了\\ 显然f(a*b)=f(a)\\ \sum_{d|T} d *\mu(d)就可求了,做前缀和的时候把T乘上就好了 分个块,整个式子就可以求了
=d=1∑ndk=1∑⌊dn⌋μ(k)∗k2∗f(⌊Tn⌋)∗f(⌊Tm⌋)枚举T=T=1∑nf(⌊Tn⌋)∗f(⌊Tm⌋)∗d∣T∑d∗μ(dT)∗(dT)2d和dT代换一下=T=1∑nf(⌊Tn⌋)∗f(⌊Tm⌋)∗d∣T∑d∗μ(d)∗T观察d∣T∑d∗μ(d)当a⊥bd∣a∑d∗μ(d)与d∣b∑d∗μ(d)对d∣a∗b∑d∗μ(d)贡献独立∴f(a∗b)=f(a)∗f(b)且∴如果a为质数 f(a)=1−a当a%b==0∵a里的元素和b里的元素相乘,μ不等于0的都在a里了显然f(a∗b)=f(a)d∣T∑d∗μ(d)就可求了,做前缀和的时候把T乘上就好了分个块,整个式子就可以求了
- 好题汇总:
- bzoj4407 求 ∑ i = 1 n ∑ j = 1 m g c d ( i , j ) k 求\sum_{i=1}^n\sum_{j=1}^m{gcd(i,j)}^k 求∑i=1n∑j=1mgcd(i,j)k ,最后主要解决的卷积是 h ( d ) = ∑ d ∣ n d k ∗ μ ( n d ) h(d)=\sum_{d|n}d^k*\mu(\frac{n}{d}) h(d)=∑d∣ndk∗μ(dn) ,发现只有 p i α ∗ μ ( 1 ) + p i α − 1 ∗ μ ( p i ) p_i^\alpha*\mu(1)+p_i^{\alpha-1}*\mu(p_i) piα∗μ(1)+piα−1∗μ(pi)有意义,更新即可。
- CF1285 F 利用莫比乌斯函数的性质,计算。