约数个数

@Ubospica 对于约数个数上界的估计

d(n)≤ncln⁡ln⁡nd(n)\le n^{\frac c{\ln\ln n}},其中 c≈1.066c\approx1.066。当 n>5000n>5000 约有 d(n)<nd(n)<\sqrt n。


质数判定

关于质数判定的一些资料:

费马素性检验 / 费马测试

费马小定理的逆否命题:若存在 1≤a<p1\le a<p,使得 ap−1≢1(modp)a^{p-1}\not\equiv1\pmod p,则 pp 一定不是素数。

多次选取质数 a∈[1,p)a\in[1,p),使用快速幂检查 pa−1 mod pp^{a-1}\bmod p 是否为 11:若存在快速幂的结果不是 11,则 pp 一定不是素数;否则 pp 大概率是素数。

遗憾的是,费马素性检验存在一个问题:有的合数 pp 也满足 ap−1≡1(modp)a^{p-1}\equiv1\pmod p(1≤a<p1\le a<p),这样的数被称为卡迈克尔数(Carmichael Number)/ 费马伪素数。例如,561=3×11×17561=3\times11\times17 就是一个卡迈克尔数。在 10910^9 以内,这样的数有 646646 个,显然 2642^{64} 以内不能通过打表来满足素性检测的要求。

Miller Rabin 素性检验

二次探测定理:若 pp 为奇素数,则 x2≡1(modp)x^2\equiv1\pmod p 的解为 x≡±1(modp)x\equiv\pm1\pmod p。

步骤:

  • 选择一个质数 aa,初始化指数 d=p−1d=p-1。
  • 快速幂判定 ad mod pa^d\bmod p 是否为 11;若是,重复 d←d2d\leftarrow\frac d2 直到 dd 为奇数或 ad≢1(modp)a^d\not\equiv1\pmod p。

错误率 4−k4^{-k},其中 kk 是选取的底数个数。时间复杂度 O(k2log⁡p)O(k^2\log p)。

关于确定性检验的底数选取:

  • 对于 2322^{32} 以内的判素,选取 2,7,612,7,61 三个底数即可。
  • 对于 2642^{64} 以内的判素,选取 2,325,9375,28178,450775,9780504,17952650222,325,9375,28178,450775,9780504,1795265022 七个底数即可。
  • 如果是考场上,选取 2,3,5,7,11,13,17,19,23,29,31,372,3,5,7,11,13,17,19,23,29,31,37(也就是前十二个质数)作为底数即可,它适用于 2782^{78} 以内的判素。

分解质因数

生日悖论

对于一个值域为 [1..n][1..n] 的随机整数生成器,生成 nln⁡2\sqrt{\frac n{\ln2}} 个数期望得到两个数相同。

Pollard Rho [UNFINISHED]

早忘完了。


欧几里得算法相关 GCD

裴蜀定理 / 贝祖定理

对于任意的 a,b,x,ya,b,x,y,有 gcd⁡(a,b)∣ax+by\gcd(a,b)\mid ax+by。即:ax+by=cax+by=c 有解,当且仅当 gcd⁡(a,b)∣c\gcd(a,b)\mid c。

推广:对于任意整数数列 {ai},{ki}\{a_i\},\{k_i\},有 gcd⁡{ai}∣∑aiki\gcd\{a_i\}\mid\sum a_ik_i。

扩展欧几里得算法 Ex GCD

用于求解二元一次不定方程 ax+by=cax+by=c,等价于 ax≡c(modb)ax\equiv c\pmod b。由裴蜀定理得当且仅当 gcd⁡(a,b)∣c\gcd(a,b)\mid c 时有解。

gcd⁡(a,b)=gcd⁡(b,a mod b)\gcd(a,b)=\gcd(b,a\bmod b)。bx0+(a mod b)y0=k×gcd⁡(b,a mod b)=k×gcd⁡(a,b)=ax+bybx_0+(a\bmod b)y_0=k\times\gcd(b,a\bmod b)=k\times\gcd(a,b)=ax+by,尝试把左边构造成右边的形式。bx0+ay0−⌊ab⌋×by0=ay0+b(x0−⌊ab⌋×y0)bx_0+ay_0-\left\lfloor\frac ab\right\rfloor\times by_0=ay_0+b(x_0-\left\lfloor\frac ab\right\rfloor\times y_0),所以{x=y0y=x0−⌊ab⌋×y0\begin{cases}x=y_0\\y=x_0-\left\lfloor\frac ab\right\rfloor\times y_0\end{cases}。

类欧几里得算法

用于计算:

f(a,b,c,n)=∑i=0n⌊ai+bc⌋g(a,b,c,n)=∑i=0ni⌊ai+bc⌋h(a,b,c,n)=∑i=0n⌊ai+bc⌋2\begin{aligned} f(a,b,c,n)&=\sum_{i=0}^n\left\lfloor\frac{ai+b}c\right\rfloor\\ g(a,b,c,n)&=\sum_{i=0}^ni\left\lfloor\frac{ai+b}c\right\rfloor\\ h(a,b,c,n)&=\sum_{i=0}^n\left\lfloor\frac{ai+b}c\right\rfloor^2 \end{aligned}

该算法多用于解决直线下整点等相关问题。

计算 1 式:f(a,b,c,n)=∑i=0n⌊ai+bc⌋f(a,b,c,n)=\sum_{i=0}^n\left\lfloor\frac{ai+b}c\right\rfloor

若 a=0a=0,则 f(a,b,c,n)=(n+1)⌊bc⌋f(a,b,c,n)=(n+1)\left\lfloor\frac bc\right\rfloor。

若 a≥c∨b≥ca\ge c\lor b\ge c,则:

f(a,b,c,n)=∑i=0n⌊i(a mod c)+(b mod c)c⌋+i⌊ac⌋+⌊bc⌋=f(a mod c,b mod c,c,n)+n(n+1)2⌊ac⌋+(n+1)⌊bc⌋\begin{aligned} f(a,b,c,n)&=\sum_{i=0}^n\left\lfloor\frac{i(a\bmod c)+(b\bmod c)}c\right\rfloor+i\left\lfloor\frac ac\right\rfloor+\left\lfloor\frac bc\right\rfloor\\ &=f(a\bmod c,b\bmod c,c,n)+\frac{n(n+1)}2\left\lfloor\frac ac\right\rfloor+(n+1)\left\lfloor\frac bc\right\rfloor \end{aligned}

否则 a<c∧b<ca<c\land b<c,则:

f(a,b,c,n)=∑i=0n∑j=0⌊ai+bc⌋−11=∑j=0M−1∑i=0n[j<⌊ax+bc⌋]=∑j=0M−1∑i=0n[i>t]=nM−∑j=0M−1t=nM−f(c,c−b−1,a,M−1)\begin{aligned} f(a,b,c,n)&=\sum_{i=0}^n\sum_{j=0}^{\left\lfloor\frac{ai+b}c\right\rfloor-1}1\\ &=\sum_{j=0}^{M-1}\sum_{i=0}^n\left[j<\left\lfloor\frac{ax+b}c\right\rfloor\right]\\ &=\sum_{j=0}^{M-1}\sum_{i=0}^n\left[i>t\right]\\ &=nM-\sum_{j=0}^{M-1}t\\ &=nM-f(c,c-b-1,a,M-1) \end{aligned}

上式中 M=⌊an+bc⌋M=\left\lfloor\frac{an+b}c\right\rfloor,t=⌊cj+c−b−1a⌋t=\left\lfloor\frac{cj+c-b-1}a\right\rfloor。

计算 2 式:g(a,b,c,n)=∑i=0ni⌊ai+bc⌋g(a,b,c,n)=\sum_{i=0}^ni\left\lfloor\frac{ai+b}c\right\rfloor

若 a=0a=0,则 g(a,b,c,n)=n(n+1)2⌊bc⌋g(a,b,c,n)=\frac{n(n+1)}2\left\lfloor\frac bc\right\rfloor。

若 a≥c∨b≥ca\ge c\lor b\ge c,则:

g(a,b,c,n)=∑i=0ni⌊i(a mod c)+(b mod c)c⌋+i2⌊ac⌋+i⌊bc⌋=g(a mod c,b mod c,c,n)+n(n+1)(2n+1)6⌊ac⌋+n(n+1)2⌊bc⌋\begin{aligned} g(a,b,c,n)&=\sum_{i=0}^ni\left\lfloor\frac{i(a\bmod c)+(b\bmod c)}c\right\rfloor+i^2\left\lfloor\frac ac\right\rfloor+i\left\lfloor\frac bc\right\rfloor\\ &=g(a\bmod c,b\bmod c,c,n)+\frac{n(n+1)(2n+1)}6\left\lfloor\frac ac\right\rfloor+\frac{n(n+1)}2\left\lfloor\frac bc\right\rfloor \end{aligned}

否则 a<c∧b<ca<c\land b<c,则:

g(a,b,c,n)=∑i=0n∑j=0⌊ai+bc⌋−1i=∑j=0M−1∑i=0n[j<⌊ax+bc⌋]i=∑j=0M−1∑i=0n[i>t]i=n(n+1)2M−∑j=0M−1t(t+1)2=12(n(n+1)M−h(c,c−b−1,a,M−1)−f(c,c−b−1,a,M−1))\begin{aligned} g(a,b,c,n)&=\sum_{i=0}^n\sum_{j=0}^{\left\lfloor\frac{ai+b}c\right\rfloor-1}i\\ &=\sum_{j=0}^{M-1}\sum_{i=0}^n\left[j<\left\lfloor\frac{ax+b}c\right\rfloor\right]i\\ &=\sum_{j=0}^{M-1}\sum_{i=0}^n\left[i>t\right]i\\ &=\frac{n(n+1)}2M-\sum_{j=0}^{M-1}\frac{t(t+1)}2\\ &=\frac12(n(n+1)M-h(c,c-b-1,a,M-1)-f(c,c-b-1,a,M-1)) \end{aligned}

上式中 M=⌊an+bc⌋M=\left\lfloor\frac{an+b}c\right\rfloor,t=⌊cj+c−b−1a⌋t=\left\lfloor\frac{cj+c-b-1}a\right\rfloor。

计算 3 式:h(a,b,c,n)=∑i=0n⌊ai+bc⌋2h(a,b,c,n)=\sum_{i=0}^n\left\lfloor\frac{ai+b}c\right\rfloor^2

若 a=0a=0,则 h(a,b,c,n)=(n+1)⌊bc⌋2h(a,b,c,n)=(n+1)\left\lfloor\frac bc\right\rfloor^2。

若 a≥c∨b≥ca\ge c\lor b\ge c,则:

h(a,b,c,n)= h(a mod c,b mod c,c,n)+2⋅f(a mod c,b mod c,c,n)⌊bc⌋+2⋅g(a mod c,b mod c,c,n)⌊ac⌋+n(n+1)(2n+1)6⌊ac⌋2+(n+1)⌊bc⌋2+n(n+1)⌊ac⌋⌊bc⌋\begin{aligned} h(a,b,c,n)=&~h(a\bmod c,b\bmod c,c,n)+2\cdot f(a\bmod c,b\bmod c,c,n)\left\lfloor\frac bc\right\rfloor\\ &+2\cdot g(a\bmod c,b\bmod c,c,n)\left\lfloor\frac ac\right\rfloor+\frac{n(n+1)(2n+1)}6\left\lfloor\frac ac\right\rfloor^2\\ &+(n+1)\left\lfloor\frac bc\right\rfloor^2+n(n+1)\left\lfloor\frac ac\right\rfloor\left\lfloor\frac bc\right\rfloor \end{aligned}

否则 a<c∧b<ca<c\land b<c。因为 p2=2⋅p(p+1)2−p=(2∑i=1pi)−pp^2=2\cdot\frac{p(p+1)}2-p=\left(2\sum_{i=1}^pi\right)-p,所以:

h(a,b,c,n)=∑i=0n(2∑j=1⌊ai+bc⌋j−⌊ai+bc⌋)=−f(a,b,c,n)+2∑i=0n∑j=1⌊ai+bc⌋j=−f(a,b,c,n)+2∑j=0M−1(j+1)∑i=0n[j<⌊ai+bc⌋]=−f(a,b,c,n)+2∑j=0M−1(j+1)∑i=0n[i>t]=−f(a,b,c,n)+2∑j=0M−1(j+1)(n−t)=−f(a,b,c,n)+nM(M+1)−2g(c,c−b−1,a,M−1)−2f(c,c−b−1,a,M−1)\begin{aligned} h(a,b,c,n)&=\sum_{i=0}^n\left(2\sum_{j=1}^{\left\lfloor\frac{ai+b}c\right\rfloor}j-\left\lfloor\frac{ai+b}c\right\rfloor\right)\\ &=-f(a,b,c,n)+2\sum_{i=0}^n\sum_{j=1}^{\left\lfloor\frac{ai+b}c\right\rfloor}j\\ &=-f(a,b,c,n)+2\sum_{j=0}^{M-1}(j+1)\sum_{i=0}^n\left[j<\left\lfloor\frac{ai+b}c\right\rfloor\right]\\ &=-f(a,b,c,n)+2\sum_{j=0}^{M-1}(j+1)\sum_{i=0}^n\left[i>t\right]\\ &=-f(a,b,c,n)+2\sum_{j=0}^{M-1}(j+1)(n-t)\\ &=-f(a,b,c,n)+nM(M+1)-2g(c,c-b-1,a,M-1)-2f(c,c-b-1,a,M-1) \end{aligned}

上式中 M=⌊an+bc⌋M=\left\lfloor\frac{an+b}c\right\rfloor,t=⌊cj+c−b−1a⌋t=\left\lfloor\frac{cj+c-b-1}a\right\rfloor。


同余相关

欧拉函数 Euler

  • 唯一分解 n=∏i=1kpiain=\prod\limits_{i=1}^kp_i^{a_i},有 φ(n)=n∏i=1k(1−1pi)\varphi(n)=n\prod\limits_{i=1}^k\left(1-\frac{1}{p_i}\right)。
  • 质数 pp 满足 φ(p)=p−1\varphi(p)=p-1,φ(pn)=pn−1(p−1)\varphi(p^n)=p^{n-1}(p-1)。
  • 当 a,ba,b 互质时有 φ(ab)=φ(a)φ(b)\varphi(ab)=\varphi(a)\varphi(b)。
  • 若 a∣pa\mid p,则有 φ(ap)=a⋅φ(p)\varphi(ap)=a\cdot\varphi(p)。

费马小定理 Fermat

若 pp 是质数且 a,pa,p 互质,则 ap−1≡1(modp)a^{p-1}\equiv1\pmod p。等价于 ap≡a(modp)a^p\equiv a\pmod p。

应用:求模质数意义下的乘法逆元;简化模意义下乘方运算的指数,即 ab≡ab mod (p−1)(modp)a^b\equiv a^{b\bmod(p-1)}\pmod p。

欧拉定理 Euler

若 a,pa,p 互质,则有 aφ(p)≡1(modp)a^{\varphi(p)}\equiv1\pmod p。当 pp 为质数时 φ(p)=p−1\varphi(p)=p-1,同费马小定理。故欧拉定理是费马小定理的扩展。

扩展欧拉定理 Ex Euler

若 b≥φ(p)b\ge\varphi(p) ,则 ab≡ab mod φ(p)+φ(p)(modp)a^b\equiv a^{b\bmod\varphi(p)+\varphi(p)}\pmod p,其中 a,pa,p 可以不互质。

卢卡斯定理 Lucas

Cnm≡C⌊n/p⌋⌊m/p⌋×Cn mod pm mod p(modp)C_n^m\equiv C_{\left\lfloor n/p\right\rfloor}^{\left\lfloor m/p\right\rfloor}\times C_{n\bmod p}^{m\bmod p}\pmod p,要求 pp 是质数。

扩展卢卡斯定理 Ex Lucas [UNFINISHED]

n!(n−m)!m! mod ab←n! mod ab\frac{n!}{(n-m)!m!}\bmod a^b\leftarrow n!\bmod a^b。

9! mod 22=(2×4×6×8)×(1×3)×(5×7)×9 mod 22=24×4!×(1×3)2×9 mod 22n! mod pc=p⌊n/p⌋×⌊n/p⌋!×(∏i=1∧in)⌊n/pc⌋\begin{aligned} 9!\bmod 2^2&=(2\times4\times6\times8)\times(1\times3)\times(5\times7)\times9\bmod2^2\\ &=2^4\times4!\times(1\times3)^2\times9\bmod2^2\\ n!\bmod p^c&=p^{\lfloor n/p\rfloor}\times\lfloor n/p\rfloor!\times\left(\prod_{i=1\land in}\right)^{\lfloor n/p^c\rfloor} \end{aligned}

线性求乘法逆元

依据:

  • ∏i=1nai−1≡(∏i=1nai)−1(modp)\prod\limits_{i=1}^na_i^{-1}\equiv\left(\prod\limits_{i=1}^na_i\right)^{-1}\pmod p ,即积的逆元同余逆元的积。
  • ∏i=1nai−1×an≡∏i=1n−1ai−1(modp)\prod\limits_{i=1}^na_i^{-1}\times a_n\equiv\prod\limits_{i=1}^{n-1}a_i^{-1}\pmod p。

中国剩余定理 CRT

若数列 {mi}\{m_i\} 互质,则线性同余方程组

{x≡a1mod  m1x≡a2mod  m2…x≡anmod  mn\begin{cases} x\equiv a_1\mod m_1\\ x\equiv a_2\mod m_2\\ \dots\\ x\equiv a_n\mod m_n\\ \end{cases}

有整数解;且在模 M=∏i=1nmiM=\prod\limits_{i=1}^nm_i 意义下有唯一整数解,为 ∑i=1nai⋅invi⋅Mmi\sum\limits_{i=1}^na_i\cdot\text{inv}_i\cdot\frac M{m_i}。其中 invi=(Mmi)−1(modmi)\text{inv}_i=\left(\frac M{m_i}\right)^{-1}\pmod{m_i}(mim_i 不保证为质数就用 Ex GCD 求)。

阶

定义:由欧拉定理「若 a⊥pa\perp p 则 aφ(p)≡1(modp)a^{\varphi(p)}\equiv1\pmod p」,记 aa 模 pp 意义下的阶 δp(a)\delta_p(a) 为最小的正整数 nn,满足 an≡1(modp)a^n\equiv1\pmod p。

性质:

  • a,a2,⋯ ,aδp(a)a,a^2,\cdots,a^{\delta_p(a)} 模 pp 两两不同余。
  • 所有 δp(a)\delta_p(a) 的倍数 nn,均满足 an≡1(modp)a^n\equiv1\pmod p。
    • 更进一步地,an≡am(modp)a^n\equiv a^m\pmod p 与 n≡m(modδp(a))n\equiv m\pmod{\delta_p(a)} 等价。
  • 若 a⊥pa\perp p 且 b⊥pb\perp p,则 δp(ab)=δp(a)δp(b)\delta_p(ab)=\delta_p(a)\delta_p(b) 等价于 δp(a)⊥δp(b)\delta_p(a)\perp\delta_p(b)。

原根

定义:若 a⊥pa\perp p 且 δp(a)=φ(p)\delta_p(a)=\varphi(p),则称 aa 为 pp 的原根。

判定定理:若 a⊥pa\perp p 且 p≥3p\ge3,则 aa 是 pp 的原根的充要条件是,对于所有素数 k∣φ(p)k\mid\varphi(p),都有 aφ(p)k≢1(modp)a^{\frac{\varphi(p)}k}\not\equiv1\pmod p。

存在定理:pp 有原根,当且仅当 p=2,4,kx,2kxp=2,4,k^x,2k^x,其中 kk 为奇素数,xx 为正整数。

个数定理:若 pp 有原根,那么它的原根个数为 φ(φ(p))\varphi(\varphi(p))。

离散对数

定义:若 pp 有原根 gg,且 gk≡a(modp)g^k\equiv a\pmod p,那么 k≡Indga(modφ(p))k\equiv\text{Ind}_ga\pmod{\varphi(p)}。

性质:

  • Indgab≡Indga+Indgb(modφ(p))\text{Ind}_gab\equiv\text{Ind}_ga+\text{Ind}_gb\pmod{\varphi(p)}。
  • Indgab≡b Indga(modφ(p))\text{Ind}_ga^b\equiv b~\text{Ind}_ga\pmod{\varphi(p)}。

大步小步算法 BSGS

求解 ax≡b(modp)a^x\equiv b\pmod p,使得 0≤x<p0\le x<p。其中 a⊥pa\perp p。

设 x=A⌊p⌋−Bx=A\lfloor\sqrt p\rfloor-B,移项,有 xAp≡baB(modp)x^{A\sqrt p}\equiv ba^B\pmod p。

像折半一样搜,O(p)O(\sqrt p) 或 O(plog⁡p)O(\sqrt p\log p)。

扩展大步小步算法 Ex BSGS [UNFINISHED]

早忘完了。


莫比乌斯反演 Mobius

数论函数

f(n)f(n) 满足 n∈N,f(n)∈Zn\in\bold N,f(n)\in\bold Z。

e.g. Ik(n)=nkI_k(n)=n^k,d(n)=∑p∣n1d(n)=\sum_{p\mid n}1,σ(n)=∑p∣np\sigma(n)=\sum_{p\mid n}p。

积性函数

∀a⊥b\forall a\perp b,f(a)f(b)=f(ab)f(a)f(b)=f(ab)。

完全积性函数:∀a,b\forall a,b,f(a)f(b)=f(ab)f(a)f(b)=f(ab)。

数论分块 / 整除分块

⌊nd⌋\lfloor\frac nd\rfloor 只有 O(n)O(\sqrt n) 种取值。

莫比乌斯函数

若唯一分解 n=∏i=1kpicin=\prod\limits_{i=1}^kp_i^{c_i},则 μ(n)={1,n=10,∃i,ci>1(−1)k,∀i,ci=1\mu(n)=\begin{cases}1,&n=1\\0,&\exist i,c_i>1\\ (-1)^k,&\forall i,c_i=1\end{cases}。

性质:

  1. ∑d∣nμ(d)=[n=1]\sum_{d\mid n}\mu(d)=[n=1]。
    唯一分解 n=∏picin=\prod p_i^{c_i},那么等式左边相当于 ∑pi(−1)∑pi\sum_{p_i}(-1)^{\sum p_i}。若 n≠1n\ne1,则 =0=0。
  2. 莫比乌斯反演:若 ∀n,f(n)=∑d∣ng(d)\forall n,f(n)=\sum_{d\mid n}g(d),则 g(n)=∑d∣nμ(d)f(nd)g(n)=\sum_{d\mid n}\mu(d)f\left(\frac nd\right)。
  3. 莫比乌斯函数 μ(n)\mu(n) 是积性函数。

狄利克雷卷积 Dirichlet

狄利克雷卷积是建立在群 (G,∗)(G,*) 上的运算,其中 GG 是数论函数集合,定义如:

(f∗g)(n)=∑d∣nf(d)g(nd)(f*g)(n)=\sum_{d\mid n}f(d)g\left(\frac nd\right)

狄利克雷卷积的单位元函数 ϵ(n)=[n=1]\epsilon(n)=[n=1]。

运算律:

  • 交换律:f∗g=g∗ff*g=g*f
  • 结合律:f∗(g∗h)=(f∗g)∗hf*(g*h)=(f*g)*h
  • 分配律:f∗(g+h)=f∗g+f∗hf*(g+h)=f*g+f*h

性质:

  • 莫比乌斯函数 性质 1:μ∗I0=ϵ\mu*I_0=\epsilon
  • 莫比乌斯反演:若 f=g∗I0f=g*I_0,则 g=μ∗fg=\mu*f
  • μ∗I1=φ\mu*I_1=\varphi
  • φ∗I0=I1\varphi*I_0=I_1

筛法

杜教筛

求 S(n)=∑i=1nf(i)S(n)=\sum_{i=1}^nf(i),其中 ff 是积性函数。下面 gg 也是积性函数。

∑i=1n(f∗g)(i)=∑d=1ng(d)S(⌊nd⌋)\sum_{i=1}^n(f*g)(i)=\sum_{d=1}^ng(d)S\left(\left\lfloor\frac nd\right\rfloor\right)

∗* 是狄利克雷卷积,这是莫反基本操作。

g(1)S(n)=∑d=1ng(d)S(⌊nd⌋)−∑d=2ng(d)S(⌊nd⌋)=∑i=1n(f∗g)(i)−∑d=2ng(d)S(⌊nd⌋)\begin{aligned} g(1)S(n)&=\sum_{d=1}^ng(d)S\left(\left\lfloor\frac nd\right\rfloor\right)-\sum_{d=2}^ng(d)S\left(\left\lfloor\frac nd\right\rfloor\right)\\ &=\sum_{i=1}^n(f*g)(i)-\sum_{d=2}^ng(d)S\left(\left\lfloor\frac nd\right\rfloor\right)\\ \end{aligned}

只要我们能快速求出 ∑i=1n(f∗g)(i)\sum_{i=1}^n(f*g)(i) 和 gg 的前缀和,就可以整除分块了。

不预处理是 O(n34)O(n^{\frac34}),线性筛预处理前 O(n23)O(n^{\frac23}) 项优化成 O(n23)O(n^{\frac23})。

洲阁筛

求 S(n)=∑i=1nf(i)S(n)=\sum_{i=1}^nf(i),其中 ff 是积性函数。用于解决杜教筛求不了的函数。

我们把 S(n)S(n) 分成两部分,第一部分是 ii 有 >n>\sqrt n 的质因子的,第二部分是剩下的。

第一部分

DP。设 g(x,y)g(x,y) 表示 1∼y1\sim y 中与前 xx 个质数互质的 ii 的 f(i)f(i) 之和,有:

g(x,y)=g(x−1,y)+f(px)⋅g(x−1,⌊ypx⌋)g(x,y)=g(x-1,y)+f(p_x)\cdot g\left(x-1,\left\lfloor\frac y{p_x}\right\rfloor\right)

可惜复杂度是 O(nln⁡n⋅n)=O(nlog⁡n)O\left(\frac{\sqrt n}{\ln\sqrt n}\cdot\sqrt n\right)=O\left(\frac n{\log n}\right) 的。

注意到当 px>yp_x>\sqrt y 时,g(x,y)=g(x−1,y)−f(px)g(x,y)=g(x-1,y)-f(p_x)。

所以一旦发现 px2>yp_x^2>y 则停止转移,记此时的 xx 为 t(y)t(y),那么 ∀x>t(y)\forall x>t(y),g(x,y)=g(x−1,y)−∑i=t(y)x−1f(pi)g(x,y)=g(x-1,y)-\sum_{i=t(y)}^{x-1}f(p_i)。答案就是 ∑i=1nf(i)⋅g(m,⌊ni⌋)\sum_{i=1}^{\sqrt n}f(i)\cdot g\left(m,\left\lfloor\frac ni\right\rfloor\right)。

第二部分 [UNFINISHED]