PN \text{PN} PN表示 Powerful number \text{Powerful number} Powerful number的集合,记 n n n的质因数分解为 ∏ i = 1 m p i c i \prod_{i=1}^mp_i^{c_i} ∏i=1mpici, n ∈ PN n\in \text{PN} n∈PN当且仅当 ∀ i , c i ≥ 2 \forall i,c_i\ge 2 ∀i,ci≥2
求 ∑ i = 1 n f ( i ) \sum_{i=1}^nf(i) ∑i=1nf(i), f ( i ) f(i) f(i)是个积性函数
构造
f
=
g
∗
h
f=g*h
f=g∗h,其中
∗
*
∗表示狄利克雷卷积,
h
h
h显然也为积性函数,故
h
(
1
)
=
1
h(1)=1
h(1)=1,由
f
(
p
)
=
g
(
1
)
h
(
p
)
+
g
(
p
)
h
(
1
)
,
f
(
p
)
=
g
(
p
)
,
p
∈
P
f(p)=g(1)h(p)+g(p)h(1),f(p)=g(p),p\in \mathbb{P}
f(p)=g(1)h(p)+g(p)h(1),f(p)=g(p),p∈P,可以得到
h
(
p
)
=
0
h(p)=0
h(p)=0,所以
h
(
i
)
>
0
h(i)>0
h(i)>0当且仅当
i
∈
PN
i\in\text{PN}
i∈PN
∑
i
=
1
n
f
(
i
)
=
∑
i
=
1
n
∑
j
∣
i
h
(
j
)
g
(
i
j
)
=
∑
j
=
1
n
h
(
j
)
∑
i
=
1
⌊
n
j
⌋
g
(
i
)
\sum_{i=1}^nf(i)=\sum_{i=1}^n\sum_{j|i}h(j)g(\frac{i}{j})=\sum_{j=1}^nh(j)\sum_{i=1}^{\lfloor\frac{n}{j}\rfloor}g(i)
i=1∑nf(i)=i=1∑nj∣i∑h(j)g(ji)=j=1∑nh(j)i=1∑⌊jn⌋g(i)
然后就可以用
d
f
s
dfs
dfs枚举
PN
\text{PN}
PN,顺便求出
h
(
i
)
h(i)
h(i)的值,然后通过快速计算
g
g
g的前缀和就可以求出
∑
i
=
1
n
f
(
i
)
\sum_{i=1}^nf(i)
∑i=1nf(i)
计算 h ( i ) h(i) h(i),可以直接看出通式或者用 h ( p c ) = f ( p c ) − ∑ i = 0 c − 1 h ( p i ) g ( p c − i ) h(p^c)=f(p^c)-\sum_{i=0}^{c-1}h(p^i)g(p^{c-i}) h(pc)=f(pc)−∑i=0c−1h(pi)g(pc−i)的递推式求,后者更加常见, ≤ n \le \sqrt n ≤n的质数个数为 O ( n log n ) O(\frac{\sqrt n}{\log n}) O(lognn),然后这样递推求 h h h是 log 2 \log^2 log2的,所以总复杂度是 O ( n log n ) O(\sqrt n\log n) O(nlogn),这个递推式有时也可以根据 g g g的一些特征优化到 log \log log
求 ∑ i = 1 n f ( i ) , i = ∑ j = 1 m p j c j , f ( i ) = i ∏ j = 1 m c j \sum_{i=1}^nf(i),i=\sum_{j=1}^mp_j^{c_j},f(i)=\frac{i}{\prod_{j=1}^mc_j} ∑i=1nf(i),i=∑j=1mpjcj,f(i)=∏j=1mcji
g ( i ) = i g(i)=i g(i)=i,求 h h h时可以优化,所以最终的复杂度为 O ( n ) O(\sqrt n) O(n)
求 ∑ i = 1 n f ( i ) , f ( p k ) = p k ( p k − 1 ) , p ∈ P \sum_{i=1}^nf(i),f(p^k)=p^k(p^k-1),p\in\mathbb{P} ∑i=1nf(i),f(pk)=pk(pk−1),p∈P
g ( i ) = i φ ( i ) g(i)=i\varphi(i) g(i)=iφ(i),用杜教筛求 g g g的前缀和,时间复杂度 O ( n 2 3 ) O(n^{\frac{2}{3}}) O(n32)