基础数论

$\text

我们默认一个数的质因数分解为以下形式:
\(P=\prod\limits_{i=1}^{\omega(P)}p_i^{e_i}\)

积性函数

若$\forall p\perp q,f(p)f(q)=f(pq)$,则称$f(x)$为积性函数。
若$\forall p,q\in\mathbb{N_+},f(p)f(q)=f(pq)$,则称$f(x)$为完全积性函数。

加性函数

若$\forall p\perp q,f(p)+f(q)=f(pq)$,则称$f(x)$为加性函数。
若$\forall p,q\in\mathbb{N_+},f(p)+f(q)=f(pq)$,则称$f(x)$为完全加性函数。

加性函数:

\(\omega(n)=\sum\limits_{p|n}1\)

完全加性函数:

\(\Omega(n)=\sum\limits_{p^{\alpha}\|n}\alpha\)

积性函数:

\(\sigma_k(n)=\sum\limits_{d|n}d^k=\begin{cases}\prod\limits_{i=1}^{\omega(n)}(e_i+1)&k=0\\\prod\limits_{i=1}^{\omega(n)}\frac{p_i^{(e_i+1)k}-1}{p_i^k-1}&k\ne0\end{cases}\)
$\sigma_0$一般简记为$d$或$\tau$,$\sigma_1$一般简记为$\sigma$。

\(\varphi(n)=\sum\limits_{i=1}^n[i\perp n]=n\prod\limits_{i=1}^{\omega}(1-\frac1{p_i})\)

\(\mu(n)=\begin{cases}0&\exists x^2|n\\-1^{\omega(n)}&\text{otherwise}\end{cases}\)

完全积性函数:

\(\epsilon(n)=[n=1]\)

\(id_k(n)=n^k\)
$id_0$一般简记为$I$,$id_1$一般简记为$id$。

\(\lambda(n)=-1^{\Omega(n)}\)

其它函数:

\(\alpha(p,n)=\sum\limits_{i=1}^{+\infty}\lfloor\frac{n}{p^i}\rfloor\)
定义是$p^{\alpha(p,n)}|n!$。

\(\pi(n)=\sum\limits_{i=2}^n[i\in\mathbb P](n\ge2)\)

Legendre符号

\((\frac ap)=\begin{cases}0&a=0\\1&\exists x\in\mathbb{F_p},x^2\equiv a\pmod p\\-1&\forall x\in\mathbb{F_p},x^2\not\equiv a\pmod p\end{cases}\)
完全积性。

设$m\ge1\wedge a\perp m$,使$a^d\equiv1\pmod m$成立的最小$d\in\mathbb N_+$称为$a$对模$m$的阶,记做$\delta_m(a)$。
没有积性。

原根

当$\delta_m(g)=\varphi(m)$时,称$g$是模$m$的原根。

性质:$\forall i\in[0,\delta_m(a)),ai\bmod m$两两不同。
$m$有原根的充要条件是$m\in{1,2,4,p
k,2p^k}\quad (p\ne2,k\ge1)$。
若一个数$p$存在原根,那么一定有$\varphi(\varphi(p))$个。

指标

\(\forall a\perp m\),有唯一的表示$a\equiv g^\gamma\pmod m\quad(\gamma\in[0,\varphi(m)))\(。我们称\)\gamma$为$a$以模$m$的以$g$为底的指标,记做$\gamma_{m,g}(a)$。
没有积性。

Dirichlet卷积

\((f*g)(n)=\sum\limits_{d|n}f(d)g(\frac nd)\)

Bell级数

给定积性函数$f(x)$与模数$p$,定义其Bell级数$f_p(x)=\sum\limits_{+\infty}f(pn)x^n$。

\(\forall p,f_p(x)=g_p(x)\Leftrightarrow f(x)=g(x)\)
\((f+g)_p(x)=f_p(x)+g_p(x)\)
\((f*g)_p(x)=f_p(x)g_p(x)\)
若$f(x)$为完全积性函数,则$f_p(x)=\frac1{1-f(p)x}$。

$\text

\(\epsilon_p(x)=1\)
\((id_k)_p(x)=\frac1{1-p^kx}\)
\((\sigma_k)_p(x)=\frac1{(1-x)(1-p^kx)}\)
\(\mu_p(x)=1-x\)
\(\mu^2_p(x)=1+x\)
\(\lambda_p(x)=\frac1{1+x}\)
\(\varphi_p(x)=\frac{1-x}{1-px}\)
\(2^{\omega(x)}_p=\frac{1+x}{1-x}\)

Dirichlet级数

给定数论函数$f(n)\(,定义其Dirichlet级数为\)\mathfrak D_f(z)=\sum\limits_{n\ge1}\frac{f(n)}{n^z}$
Riemann zeta函数:\(\zeta(z)=\sum\limits_{n\ge1}\frac1{n^z}\)

$\text

\(\mathfrak D_f\mathfrak D_g=\mathfrak D_{f*g}\)
\(\mathfrak D_f+\mathfrak D_g=\mathfrak D_{f+g}\)
设$z=x+iy$,那么我们有:
\(\Re(\mathfrak D_f(z))=\sum\limits_{n\geq 1}\frac{f(n)\cos(y\log n)}{n^x}\)
\(\Im(\mathfrak D_f(z))=\sum\limits_{n\geq 1}\frac{f(n)\sin(y\log n)}{n^x}\)
若$f(n)\(为积性函数,那么\)\mathfrak D_f(z)=\prod\limits_{p\in\mathbb P}(1+\sum\limits_{e\ge1}\frac{f(pe)}{p})$。
\(\mathfrak D_f'(z)=-\sum\limits_{n\ge1}\frac{f(n)\ln(n)}{n^z}\)

$\text

\(\mathfrak D_{\epsilon}(z)=1\)
\(\mathfrak D_{id_k}(z)=\zeta(z-k)\)
\(\mathfrak D_{\mu}(z)=\frac1{\zeta(z)}\)
\(\mathfrak D_{\varphi}(z)=\frac{\zeta(z-1)}{\zeta(z)}\)
\(\mathfrak D_{\sigma_k}(z)=\zeta(z-k)\zeta(z)\)

$\text

Euler定理

\(\forall a\perp m,a^{\varphi(m)}\equiv1\pmod m\)

Ex Eluer定理

\(\forall b\ge\varphi(m),a^b\equiv a^{b\bmod\varphi(m)+\varphi(m)}\pmod m\)

CRT

设$m_1,\cdots,m_k\in\mathbb{N_+}\(两两互质,对于同余方程组\)\forall a_1,\cdots a_k\in N,x\equiv a_i\pmod)(i\in[1,k])$。
令$m=\prod\limits_m_i,m=m_iM_i,M_i{-1}\(是\)\bmod m_i$意义下$M_i$的逆元,则同余方程组的解为$x\equiv \sum\limits_M_iM_i{-1}a_i\pmod m$。

Lucas定理

\({n\choose m}\equiv{\lfloor\frac np\rfloor\choose\lfloor\frac mp\rfloor}{n\bmod p\choose m\bmod p}\pmod p\)

Wilson定理

\((p-1)!\equiv-1\pmod p\Leftrightarrow p\in\mathbb P\)

Euler准则

\((\frac ap)\equiv a^{\frac{p-1}2}\pmod p\)

Mobiüs反演定理

\(f=g*I\Leftrightarrow g=f*\mu\)
\(F(n)=\sum\limits_{n|d}f(d)\Leftrightarrow f(n)=\sum\limits_{n|d}\mu(\frac dn)F(n)\)

Lagrange定理

若一多项式$f(x)\(的系数在\)\mathbb{F_}$内,则$f(x)\equiv0\pmod p$最多有$\deg f$个根。

Gauss二次互反律

若$p,q$为不同的奇素数,则$(\frac pq)(\frac qp)=(-1)^{\frac{(p-1)(q-1)}4}$。

Fermat多边形数定理

每一个正整数最多可以表示为$n$个$n$边形数之和。
第$i$个$n$边形数为$\frac{i[(n-2)i-(n-4)]}{2}$。

Fermat大定理

$\forall n>2,xn+yn=z^n$无正整数解。

Goldbach猜想

大于$2$的偶数都可表示成两个素数之和。
弱Goldbach猜想:大于$5$的奇数都可以表示成三个素数之和。

Waring问题

\(\forall k\in\mathbb{N_+},\exists g(k)\in\mathbb{N_+},s.t.\forall a\in\mathbb{N_+}\),$a$可以被表示为至多$g(k)$个$ik(i\in\mathbb{N_+})$形式的数的和。
这个猜想是正确的,还有一个猜想是$g(k)=2
k+\lfloor(\frac32)^k\rfloor-2$。

Pisano period

Link

$\text

\(\mu*I=\epsilon\)
\(I*id_i=\sigma_i\)
\(\varphi*I=id\)
\(\mu*id=\varphi\)
\(I*\frac{\mu}{id}=\frac{\varphi}{id}\)
\(d^2*\mu=\mu^2*d\)
\(2^{\omega(n)}=\mu^2*I\)
\(d(ij)=\sum\limits_{x|i}\sum\limits_{y|j}[x\perp y]\)
\(\varphi(ab)=\frac{\varphi(a)\varphi(b)(a,b)}{\varphi(\gcd(a,b))}\)
\(\prod\limits_{i=1}^p(x+i)=x(x^{p-1}-1)\qquad [x^i]\in\mathbb{F_p}\)
\(f(1)=1\Rightarrow f^p=\epsilon\qquad f(i)\in\mathbb{F_p}\)
若$h$是完全积性函数,则$h(f*g)=(hf)hg$。
对任意数论函数$h$,\(h(f*g)=(hf)*g+(hg)*f\)

$\text

Ex Euclid

求解$ax+by=\gcd(a,b)=d$。

当$b=0$时,\(\gcd(a,b)=a\),显然存在一对整数解$x=1,y=0$。
若$b\ne0$,设$ax_1+by_1=\gcd(a,b)=\gcd(b,a\bmod b)=bx_2+(a\bmod b)y_2$。
我们有$a\bmod b=a-\lfloor\frac\rfloor b$。
代入得$ax_1+by_1=ay_2+b(x_2-\lfloor\frac\rfloor y2)$。
也就是说$x_1=y_2 , y_1=x_2-\lfloor\frac\rfloor y_2$。
如此递归直到$b=0$,然后逆推回来。
注意求的解是绝对值最小的一组。

Ex CRT

相对CRT而言$m_i$不一定两两互质。

考虑数归求解。
第一个方程很容易解。
现在我们假设前$k-1$个方程的特解是$x$,\(M_k=\operatorname{lcm}\ m_i(i\in[1,k)\),则$x+iM_(i\in Z)$是前$k-1$个方程的通解。
现在我们还要满足第$k$个方程,即求出一个$t$使得$x+tM_\equiv a_k\pmod)$,然后前$k$个方程的特解就是$x+tM_$。
上面这个方程还是$ax\equiv b\pmod m$形式的,它等同于$ax+my=b$。
如果这个方程有解的充要条件是$\gcd(a,m)|b$。
用exgcd求出$ax+my=\gcd(a,m)$的一组解$x_0,y_0$。
那么有$a(\frac{\gcd(a,m)})+m(\frac{\gcd(a,m)})=b$。

BSGS

求(最小的)满足$a^x\equiv b\pmod m$的$x$。其中$a\perp m$。

令$x=fg-h$,则有$(af)g\equiv bah\pmod m$。
预处理$h\in[0,g)$的$ba
h\bmod m$,然后枚举$f\in[0,\frac pg]$查表。
显然$g=\sqrt p$时最优。

Ex BSGS

\(a\not\perp m\)

令$d=\gcd(a,m)$,有解的充要条件是$d|b\vee b=1$。
否则我们有$a^\frac ad\equiv\frac bd\pmod{\frac md}$。
一直递归直到满足停止条件:若$d=1$直接BSGS。若$m$很小直接暴力。
此时有$a^\frac{a^k}{\prod d}\equiv\frac b{\prod d}\pmod{\frac m{\prod d}}$。
记得把求出来的答案加上$k$。

Ex Lucas

求${n\choose m}\bmod q$

$\text

质因数分解$q=\prod\limits_{\omega(q)}p_i$。
$\forall i\in[1,\omega(q)]\(求出\){n\choose m}\bmod{p_i^}$,然后CRT合并。

$\text

\({n\choose m}\equiv\frac{n!}{m!(n-m)!}\pmod{p_i^{e_i}}\)
然后我们发现并不一定有逆元。
所以求出$A=\alpha(p_i,n),B=\alpha(p_i,m),C=\alpha(p_i,n-m)\(,那么\)\frac{n!}{m!(n-m)!}\equiv \frac{\frac{n!}{p_iA}}{\frac{m!(n-m)!}{p_i{B+C}}}p_i^\pmod$,这样就能保证求出逆元了。

$\text

根据定义,\(A=\alpha(p_i,n)=\sum\limits_{j=1}^{+\infty}\lfloor\frac n{p_i^j}\rfloor\)
但是$\frac{n!}{p_iA}\bmod{p_i}$似乎不太好算。
把$n!$中是$p_i$的倍数的项提出来,\(n!\equiv p_i^{\lfloor\frac n{p_i}\rfloor}\lfloor\frac n{p_i}\rfloor!\prod\limits_{j=1}^n[j\perp p_i]j\pmod{p_i^{e_i}}\)
$\lfloor\frac n\rfloor!$可以递归处理。
所以我们可以只要考虑$\prod\limits_n[j\perp p_i]j\bmod{p_i}$。
这东西显然以$p_i^\(为循环节,即\)\prod\limits_n[j\perp p_i]j\equiv(\prod\limits_{p_i^}[j\perp p_i]j){\frac n{p_i}}(\prod\limits_{n\bmod p_i}[j\perp p_i]j)\pmod{p_i^}$。
两边都可以$O(p_i^)$暴力算。

总的复杂度大概是$O(q\log q)$。

Cipolla

给定$a,p$,求$x^2\equiv a\pmod p$的解。

$p=2\vee a=0$特判。
然后利用Euler准则计算$a$是否为二次剩余,判断是否有解。
找一个$w$使得$(\frac{w2-a}p)=-1$,期望随机次数为$2$。
然后计算$(w+\sqrt{w
2-a})^{\frac{p+1}2}$,就可以得到一个$x$,另一个就是$p-x$。
根据Lagrange定理,算出来的一定是个整数。

求原根

求模$m$的原根$g$。

有原根的充要条件在定义部分已经写了。
分解$\varphi(m)=\prod\limits_{\omega(\varphi(m))}p_i$。
枚举$a\in[2,\varphi(m))$,对每个$p_i$检测是否有$a^{\frac{\varphi(m)}}\not\equiv1\pmod m$。
如果$\forall i\in[1,\omega(\varphi(m))]$都成立,那么这个$a$就是一个原根。
复杂度是$O(\varphi(m)\log2m)$的,不过如果只要求最小原根的话大概就是$O(\sqrt[4]m\log2m)$的。

$k$次剩余

给定$a,k,m$,求$x^k\equiv a\pmod m$的解。

$\text

\(a\perp m\wedge m=p^t\qquad(p\ne2)\)

找到$m$的一个原根$g$。
利用BSGS求出$\gamma_{m,g}(a)$,设$y=\gamma_{m,g}(x)$,然后两边对$g$取对数,那么我们要解的就是$yk\equiv\gamma_{m,g}(a)\pmod{\varphi(m)}$。
exgcd解一下就好了。

$\text

\(a\not\perp m\wedge m=p^t\qquad(p\ne2)\)

\(a=0\)

显然$x={p^i|i\in[\lceil\frac tk\rceil,t)}$。

\(p|a\)

不妨设$a=spr$,显然必须满足$k|r$才能有解。
令$x=yp
{\frac rk}$,那么我们要解的就变成了$yk\equiv r\pmod{p}$。
此时一定会有$r\perp p^\(,套用\)\text$就好了。

$\text

\(m=\prod\limits_{i=1}^{\omega(m)}p_i^{e_i}\qquad(p_i\ne2)\)

分别对每个$p_i^\(调用\)\text$。
这样我们就求出了$\forall i\in[1,\omega(m)],x\equiv x_i\pmod{p_i^}$。
注意每个$x_i$可能有多解,枚举每一个CRT合并即可。
根据Lagrange定理总解数不超过$k$。

$\text

\(m=2^sn,n=\prod\limits_{i=1}^{r}p_i^{t_i}\qquad(p_i\ne2)\)

考虑先计算出$yk\equiv a\pmod n$。
那么对应的$y
k\equiv a\pmod{2n}$的解就是$y,y+n$的其中一个或者没有。
枚举每个$y$然后一路做上去就行了。

Miller-Rabin

判断一个数是否是素数。

根据Euler定理,若一个数$n$不满足$\forall a\in[2,n),a^\equiv1\pmod n$,那么$n$一定不是质数。
但是它的逆否命题并不成立。
但是我们知道,\(x^2\equiv1\pmod p\wedge x<p\Rightarrow x=1\vee x=p-1\)
所以当$a^\equiv1\pmod n\wedge 2|n-1$成立时,我们再计算$a^{\frac2}\equiv\pm1\pmod n$是否成立。
如果不成立,那么说明$n$一定不是素数。
如果$a^{\frac2}\equiv-1\pmod n$,那么说明$n$可能是素数,算法结束。
如果$a^{\frac2}\equiv1\pmod n$,那么说明$n$可能是素数,继续检测。
我们把这个过程叫做以$a$为底的二次探测,把能够通过这个检测是合数叫做以$a$为底的强伪素数。
实际上当我们取了$k$个$a$时,这个算法的正确率大概是$4^{-k}$。
所以我们可以直接rand一些$[2,n)$的数进行检测。
时间复杂度为$O(k\log^2n)$。

Pollard-Rho

质因数分解$n$。

本质依旧是试除法。
我rand一个$x$,看$n$是否是$x$的约数。
然后更优秀的试除法是我rand一个$x$,看是否有$n\perp x$。

根据生日悖论,我们rand出$x_1,\cdots,x_m$,若$\exists i,j,s.t.\left|x_i-x_j\right|\not\perp n$,那么我们就找到了$n$的一个约数$(\left|x_i-x_j\right|,n)$。根据上古论文的证明$m=O(\sqrt[4]n)$。
但是直接检测是$O(m^2)$的,这等于说复杂度还是$O(\sqrt n)$。

假如我们只取$\left|x_i-x_j\right|$,这样就能$O(m)$地检测了。
但是这样找到的概率就会低很多,所以我们需要一个优秀的rand方法。
rand一个$c$,令$f(x)=x^2+c\pmod n$,再rand一个$x_0$,并且有$x_i=f(x_)$。这个序列很优秀。
根据Mandelbrot集的相关知识,这个序列确实很优秀。

但是做了很多次迭代之后很可能会有$x_t=x_s\quad(t>s)$,这样就出现了一个环。
有一个科技叫做floyd判圈法,大概就是你在迭代求$f(x_i)$同时求$f(x_{2i})$。
假如从$r$开始有一个长度为$c$的环,那么恒有$f_i=f_{i+c}\quad(i\ge r)$。我们能够保证在$r+c$次迭代以内判出环。

然后我们发现$\gcd$太慢了,即使加了二进制优化/记忆化等优化之后它还是很慢,并且是复杂度大头。
根据$\gcd$的性质,我们可以累$u$个$\left|x_i-x_{i+1}\right|\(,然后直接计算\)(\prod\limits_^u\left|x_i-x_{i+1}\right|\bmod n,n)$。
考虑用倍增做这个过程,先rand长度为$2$的序列,再rand长度为$4$的序列...
并且当我们累了$127$项时,直接计算一次$\gcd$。
这样相对而言可以把复杂度平衡得较为不错。

总的复杂度大概是$O(\sqrt[4]n)$级别的。

卷积

我们知道Dirichlet卷积就是将两个数论函数的Dirichlet级数相乘,直接乘的时间复杂度为$O(n\log n)$。
对于积性函数而言,其Dirichlet级数可以写成$\prod\limits_{p\in\mathbb P}(1+\sum\limits_{e\ge1}\frac{f(pe)}{p})$。
那么我们就可以将求积性函数与积性函数的Dirichlet卷积做到$O(n)$,将求积性函数与任意数论函数的Dirichlet卷积做到$O(n\log\log n)$。

杜教筛

求$F=\sum f$的$F(n)$。

构造$f*g=h$,其中$g,h$满足能够快速求出$g,H=\sum h$。

那么可以得到$H(n)=\sum\limits_ng(d)F(\lfloor\frac nd\rfloor)$。
然后我们把右边的$d=1$的项提出来并且移项,\(F(n)=H(n)-\sum\limits_{d=2}^n g(d)F(\lfloor\frac nd\rfloor)\)
我们先线性筛$T$范围内的$f,F$,然后后面的用数论分块+记忆化解决(可以发现要有用的下标都是$\lfloor\frac ni\rfloor$,因此可以用$\lfloor\frac ni\rfloor$的$i$存下标)。
如果我们默认能够$O(n)$筛出前$n$项的$f$并且能够快速计算$H$在所有$\lfloor\frac ni\rfloor$的值,那么复杂度为$O(T+\frac n{\sqrt T})$,当$T=n
{\frac23}$时取到最优复杂度$O(n^{\frac23})$。

Cy筛.1

求$H=\sum h$的$H(n)$。

构造$f*g=h$,其中$f,g$满足能够快速求出$F=\sum f,G=\sum g$。

先回到定义式上:\(H(n)=\sum\limits_{i=1}^n\sum\limits_{d|n}g(d)f(\frac{i}{d})=\sum\limits_{d=1}^ng(d) \sum\limits_{i=1}^{\lfloor\frac{n}{d}\rfloor}f(i)\)
画出$xy=n$的曲线的图像,每个整点$(x,y)$有一个权值$f(x)g(y)$,$H(n)$就等价于曲线下整点的权值和。
利用经典容斥套路可以得到:\(H(n)=\sum\limits_{i=1}^{\lfloor\sqrt n\rfloor}f(i)G(\lfloor\frac ni\rfloor)+\sum\limits_{i=1}^{\lfloor\sqrt n\rfloor}g(i)F(\lfloor\frac ni\rfloor)-F(\lfloor\sqrt n\rfloor)G(\lfloor\sqrt n\rfloor)\)
时间复杂度为$O(\sqrt n)$。

Cy筛.2

求$f=g^m,F=\sum f$的$F(n)$。其中$g$满足能够快速求出$G=\sum g$。

考虑数论分块+倍增,维护$P=[1,T]\cup{\lfloor\frac ni\rfloor|i\in[1,\lfloor\frac nT\rfloor]}$下标位置的取值。
那么我们要解决的就是已知$F=\sum f,G=\sum g$在$P$中下标上的取值,求$H=\sum h=\sum f*g$在$P$中下标上的取值。
对于$[1,T]$部分,我们可以直接暴力差分还原$f,g$,卷积得到$h$,再前缀和得到$H$,时间复杂度为$O(T\log T)$。
对于${\lfloor\frac ni\rfloor|i\in[1,\lfloor\frac nT\rfloor]}$部分,考虑用Cy筛.1中的方法计算。
先回到定义式上:\(H(n)=\sum\limits_{i=1}^n\sum\limits_{d|n}g(d)f(\frac{i}{d})=\sum\limits_{d=1}^ng(d) \sum\limits_{i=1}^{\lfloor\frac{n}{d}\rfloor}f(i)\)
画出$xy=n$的曲线的图像,每个整点$(x,y)$有一个权值$f(x)g(y)$,$H(n)$就等价于曲线下整点的权值和。
利用经典容斥套路可以得到:\(H(n)=\sum\limits_{i=1}^{\lfloor\sqrt n\rfloor}f(i)G(\lfloor\frac ni\rfloor)+\sum\limits_{i=1}^{\lfloor\sqrt n\rfloor}g(i)F(\lfloor\frac ni\rfloor)-F(\lfloor\sqrt n\rfloor)G(\lfloor\sqrt n\rfloor)\)
不难发现所有需要用到的$f,g,F,G$的下标都在$P$中。
这一部分的时间复杂度为$\sum\limits_{\frac nT}O(\sqrt{\frac ni})=\frac n{\sqrt T}$。
因此总的时间复杂度为$O((T\log T+\frac n{\sqrt T})\log m)$,取$T=n
{0.6}$时比较优秀。

Min_25筛

求$\sum\limits_nf(x)$,其中$f(x)$是一个积性函数,且$f(p)$是一个简单多项式,$f(pe)$可以快速计算。

记$\min(x)$表示$x$的最小质因子。用$p$表示质数,$p_i$表示第$i$个质数,\(S_n=\{\lfloor\frac nm\rfloor|m\in\mathbb{N_+}\}\)

考虑枚举$x$的最小质因子,再枚举它的出现次数:

\[ \begin{aligned} \sum\limits_{x=1}^nf(x)&=1+\sum\limits_{p=2}^n\sum\limits_{x=2}^n[\min(x)=p]f(x)\\ &=1+\sum\limits_{p=2}^n\sum\limits_{e=1}^{\lfloor\log_pn\rfloor}f(p^e)(1+\sum\limits_{x=2}^{\lfloor\frac n{p^e}\rfloor}[\min(x)>p]f(x)) \end{aligned} \]

注意到若$x$是合数,则$x$的最小质因子不会超过$\lfloor\sqrt x\rfloor$,因此我们有:

\[ \sum\limits_{p=2}^n\sum\limits_{e=1}^{\lfloor\log_pn\rfloor}f(p^e)(1+\sum\limits_{x=2}^{\lfloor\frac n{p^e}\rfloor}[\min(x)>p]f(x))=\sum\limits_{p=2}^{\lfloor\sqrt n\rfloor}\sum\limits_{e=1}^{\lfloor\log_pn\rfloor}f(p^e)(1+\sum\limits_{x=2}^{\lfloor\frac n{p^e}\rfloor}[\min(x)>p]f(x))+\sum\limits_{p=\lfloor\sqrt n\rfloor+1}^nf(p) \]

设$g_{n,m}=\sum\limits_^n[\min(x)>p_m]f(x),h_n=\sum\limits_^nf(p)$,那么我们可以得到递推式:

\[ \begin{aligned} g_{n,m}&=\sum\limits_{x=2}^n[\min(x)>p_m]f(x)\\ &=\sum\limits_{i=m+1}^{p_i^2\le n}\sum\limits_{e=1}^{\lfloor\log_{p_i}n\rfloor}f(p_i^e)([e>1]+\sum\limits_{x=2}^{\lfloor\frac n{{p_i}^e}\rfloor}[\min(x)>p_i]f(x))+\sum\limits_{p=p_m+1}^nf(p)\\ &=\sum\limits_{i=m+1}^{p_i^2\le n}\sum\limits_{e=1}^{\lfloor\log_pn\rfloor}f(p^e)([e>1]+g_{\lfloor\frac n{p^e}\rfloor,i})+h_n-h_{p_m} \end{aligned} \]

而我们要求的$\sum\limits_^nf(x)=g_{n,0}+1$。
注意到若$m\ge\sqrt n$,则$g_{n,m}=h_n-h_m$。且我们只需要求出$x\in S_n$的$g_{x,m}$。
因此如果我们求出了需要的$h$,那么我们就可以爆搜求出$g$。
接下来考虑如何求出$h$。容易发现我们只需要求出$x\in S_n$的$h_x$。
只考虑$f(p)$为完全积性函数的情况,其它情况可以拆成若干个完全积性函数的和。
设$h'{n,m}=\sum\limits^n[x\in\mathbb P\text\min(x)>p_m]f(x)$,那么我们可以得到递推式:

\[ h'_{n,m}= \begin{cases} h'_{n,m-1}&p_m^2>n\\ h'_{n,m-1}-f(p_m)(h'_{\lfloor\frac n{p_m}\rfloor,m-1}-h'_{p_m-1,m-1})&p_m^2\le n \end{cases} \]

而我们要求的$h_x=h'_{x,|\mathbb P|}$。
将第二维滚掉然后暴力dp即可。

整体的时间复杂度分为计算$g$和计算$h$两部分。
计算$h$部分的如下:
注意到每个$\lfloor\frac nm\rfloor=i$只会对不超过$\sqrt i$的素数产生转移,因此时间复杂度如下:

\[ \begin{aligned} &\sum\limits_{i=1}^{\sqrt n} O(\frac{\sqrt i}{\log\sqrt i})+O(\frac{\sqrt{\frac ni}}{\log\sqrt{\frac ni}})\\ &=O(\int_1^{\sqrt n}\frac{\sqrt{\frac nx}}{\log{\sqrt{\frac nx}}}\mathrm dx)\\ &=O(\frac{n^{\frac34}}{\log n}) \end{aligned} \]

计算$g$部分的时间复杂度为$O(n^{1-\epsilon})$,但是在$n\le 10^{13}$的前提下不会超过$O(\frac{n^{\frac34}}{\log n})$。

posted @ 2019-12-28 09:21  Shiina_Mashiro  阅读(808)  评论(2)    收藏  举报