这只是个人看法哦
min25筛的疑点
想了好久为什么边界函数要看成全是质数的情况。其实边界函数就是真 · 前缀和。
因为 min25筛的函数必须是
f
(
x
)
=
x
k
\mathbf{f(x)=x^k}
f(x)=xk
性质1:
f
(
x
)
=
x
k
\mathbf{f(x)=x^k}
f(x)=xk 为积性函数
性质2:
f
(
x
)
\mathbf{f(x)}
f(x) 的真 · 前缀和很好求
比如
f
(
x
)
=
∑
x
=
1
n
x
0
=
n
\mathbf{f(x)=}\sum_{x=1}^n x^0=n
f(x)=∑x=1nx0=n
f
(
x
)
=
∑
x
=
1
n
x
1
=
n
(
n
+
1
)
2
\mathbf{f(x)=}\sum_{x=1}^n x^1 =\frac{n(n+1)}{2}
f(x)=∑x=1nx1=2n(n+1)
f
(
x
)
=
∑
x
=
1
n
x
2
=
n
(
n
+
1
)
(
2
n
+
1
)
6
\mathbf{f(x)=}\sum_{x=1}^n x^2=\frac{n(n+1)(2n+1)}{6}
f(x)=∑x=1nx2=6n(n+1)(2n+1)
f
(
x
)
=
∑
x
=
1
n
x
3
=
n
2
(
n
+
1
)
2
4
\mathbf{f(x)=}\sum_{x=1}^n x^3=\frac{n^2(n+1)^2}{4}
f(x)=∑x=1nx3=4n2(n+1)2
反正
最后只要能算出
∑
i
=
1
n
[
i
是
质
数
]
x
k
\sum_{i=1}^n[i是质数]x^k
i=1∑n[i是质数]xk 就行啦
就是后文说到的g(x,|p|),只是一种意思的不同表示而已
min25筛的辅助函数定义
假设我们要算 F ( x ) 的 前 缀 和 F(x)的前缀和 F(x)的前缀和
设
f
(
x
)
=
x
k
,
F
(
x
)
=
a
0
f
0
(
x
)
+
a
1
f
1
(
x
)
+
a
2
f
2
(
x
)
+
.
.
.
+
a
m
f
m
(
x
)
设f(x)=x^k,F(x)=a_0f_0(x)+a_1f_1(x)+a_2f_2(x)+... +a_mf_m(x)
设f(x)=xk,F(x)=a0f0(x)+a1f1(x)+a2f2(x)+...+amfm(x)
S
(
x
)
为
F
(
x
)
的
前
缀
和
,
S
(
x
)
=
∑
i
=
1
n
F
(
i
)
S(x)为F(x)的前缀和,S(x)=\sum_{i=1}^nF(i)
S(x)为F(x)的前缀和,S(x)=∑i=1nF(i)
g
(
x
,
∣
p
∣
)
为
f
的
质
数
前
缀
和
,
g
(
x
,
∣
p
∣
)
=
∑
i
=
1
n
[
i
∈
P
r
i
m
e
]
f
(
i
)
g(x,|p|)为f的\pmb{质数}前缀和,g(x,|p|)=\sum_{i=1}^n[i\in Prime]f(i)
g(x,∣p∣)为f的质数质数质数前缀和,g(x,∣p∣)=∑i=1n[i∈Prime]f(i),至于如何筛,网上都是
G
(
x
)
为
F
(
x
)
的
质
数
前
缀
和
,
G
(
x
)
=
a
0
g
0
(
x
,
∣
p
∣
)
+
a
1
g
1
(
x
,
∣
p
∣
)
+
a
2
g
2
(
x
,
∣
p
∣
)
+
.
.
.
+
a
m
g
m
(
x
,
∣
p
∣
)
G(x)为F(x)的\pmb{质数}前缀和,G(x)=a_0g_0(x,|p|)+a_1g_1(x,|p|)+a_2g_2(x,|p|)+... +a_mg_m(x,|p|)
G(x)为F(x)的质数质数质数前缀和,G(x)=a0g0(x,∣p∣)+a1g1(x,∣p∣)+a2g2(x,∣p∣)+...+amgm(x,∣p∣)
这里为了方便起见,再设
h
(
x
)
=
∑
i
=
1
x
f
(
P
i
)
h(x)=\sum_{i=1}^{x}f(P_i)
h(x)=∑i=1xf(Pi),在初始化的时候,即欧拉线筛的时候顺便求好
以及
H
(
x
)
=
a
0
h
0
(
x
)
+
a
1
h
1
(
x
)
+
a
2
g
2
(
x
)
+
.
.
.
+
a
m
g
m
(
x
)
H(x)=a_0h_0(x)+a_1h_1(x)+a_2g_2(x)+... +a_mg_m(x)
H(x)=a0h0(x)+a1h1(x)+a2g2(x)+...+amgm(x)
min25筛的过程
首先线筛出
n
\sqrt n
n 以内的质数,顺便求
h
(
x
)
h(x)
h(x) 和
H
(
x
)
H(x)
H(x),然后整除分块求id
接着算
g
(
n
,
∣
p
∣
)
\mathbf{ g(n,|p|)}
g(n,∣p∣),即筛好的前置函数,合起来就可以算出
G
(
x
)
\mathbf{G(x)}
G(x),即
F
(
x
)
\mathbf{F(x)}
F(x)的质数前缀和,继而筛(补)出
S
(
x
)
\mathbf{S(x)}
S(x)
g ( n , j ) = { g ( n , j − 1 ) P j 2 > n g ( n , j − 1 ) − P j k [ g ( n P j , j − 1 ) − h ( j − 1 ) ] P j 2 ≤ n g(n,j)= \begin{cases} g(n,j-1)&P_j^2\gt n\\ g(n,j-1)-P_{j}^k[g(\frac{n}{P_j},j-1)-h(j-1)]&P_j^2\le n \end{cases} g(n,j)={g(n,j−1)g(n,j−1)−Pjk[g(Pjn,j−1)−h(j−1)]Pj2>nPj2≤n
然后只需要用到 g ( n , ∣ p ∣ ) g(n,|p|) g(n,∣p∣)
G ( n ) = a 0 g 0 ( n , ∣ p ∣ ) + a 1 g 1 ( n , ∣ p ∣ ) + a 2 g 2 ( n , ∣ p ∣ ) + . . . + a m g m ( n , ∣ p ∣ ) G(n)=a_0g_0(n,|p|)+a_1g_1(n,|p|)+a_2g_2(n,|p|)+... +a_mg_m(n,|p|) G(n)=a0g0(n,∣p∣)+a1g1(n,∣p∣)+a2g2(n,∣p∣)+...+amgm(n,∣p∣)
然后利用 G ( n ) G(n) G(n)与 H ( x ) H(x) H(x),以及可以快速求的 F ( p k ) F(p^k) F(pk)
S ( n , j ) = G ( n ) − H ( j − 1 ) + ∑ k = j P k 2 ≤ n ∑ i = 1 P k i + 1 ≤ n ( S ( n P k i , k + 1 ) × F ( P k i ) + F ( P k i + 1 ) ) S(n,j)=G(n)- H(j-1)+\sum_{k=j}^{P_k^2\le n}\sum_{i=1}^{P_k^{i+1}\le n}\biggl(S(\frac{n}{P_k^i},k+1)\times F(P_k^i)+F(P_k^{i+1})\biggr) S(n,j)=G(n)−H(j−1)+k=j∑Pk2≤ni=1∑Pki+1≤n(S(Pkin,k+1)×F(Pki)+F(Pki+1))
然后 S ( n , 1 ) S(n,1) S(n,1) 就是 ∑ i = 2 n F ( x ) \sum_{i=2}^{n}F(x) ∑i=2nF(x)啦,所以 S ( n , 1 ) + F ( 1 ) S(n,1)+F(1) S(n,1)+F(1)就是所求答案了呀!!!
min25筛的总结
F(1)的值无所谓反正最后加
反正只要满足如下条件就可使用:
1. F ( p ) 可 以 用 简 单 多 项 式 表 示 , p ∈ p r i m e 2. F ( p k ) 可 以 快 速 求 出 , p ∈ p r i m e 3. F ( a b ) = F ( a ) F ( b ) 满 足 a , b ∈ p r i m e 1.F(p)可以用简单多项式表示,p\in prime \\ 2.F(p^k)可以快速求出,p\in prime \\ 3.F(ab)=F(a)F(b)满足a,b\in prime 1.F(p)可以用简单多项式表示,p∈prime2.F(pk)可以快速求出,p∈prime3.F(ab)=F(a)F(b)满足a,b∈prime
反正min25超超超优秀啊,什么形如
∑
i
=
1
n
i
k
1
ϕ
(
i
k
2
)
μ
(
i
k
3
)
\sum_{i=1}^{n} i^{k_1}\phi(i^{k_2})\mu(i^{k_3})
∑i=1nik1ϕ(ik2)μ(ik3),都直接秒杀好不好!!!
显
然
F
(
p
)
=
(
−
1
)
k
3
p
k
1
+
k
2
−
1
(
p
−
1
)
显然F(p)=(-1)^{k_3}p^{k_1+k_2-1}(p-1)
显然F(p)=(−1)k3pk1+k2−1(p−1)
F ( p k ) = ( − 1 ) k k 3 p k ( k 1 + k 2 ) − 1 ( p − 1 ) F(p^k)=(-1)^{kk_3}p^{k(k_1+k_2)-1}(p-1) F(pk)=(−1)kk3pk(k1+k2)−1(p−1)
而且 d ( x ) , μ ( x ) , ϕ ( x ) d(x),\mu(x),\phi(x) d(x),μ(x),ϕ(x)都是积性函数,那么乘积也满足第三条,就可以用min25筛
但是记得幂次不能太大,6次及以上自然数幂和要套公式,复杂度就起来了,而且我也不会,嘿嘿
再补充两个:
f
(
x
)
=
∑
x
=
1
n
x
4
=
n
(
n
+
1
)
(
6
n
3
+
9
n
2
+
n
−
1
)
30
\mathbf{f(x)=}\sum_{x=1}^n x^4=\frac{n(n+1)(6n^3+9n^2+n-1)}{30}
f(x)=x=1∑nx4=30n(n+1)(6n3+9n2+n−1)
f ( x ) = ∑ x = 1 n x 5 = n 2 ( n + 1 ) ( 2 n 3 + 4 n 2 + n − 1 ) 12 \mathbf{f(x)=}\sum_{x=1}^n x^5=\frac{n^2(n+1)(2n^3+4n^2+n-1)}{12} f(x)=x=1∑nx5=12n2(n+1)(2n3+4n2+n−1)