Number Theory

Definations

  • 剩余类:记膜 mmrr 的自然数组成的集合 krk_r 为膜 mm 的一个剩余类,任意 amodm=ra\bmod m=r 构成 krk_r 的一个代表元。
  • 完系:每个 krk_r 中取一个代表元构成膜 mm 的一个完系。
  • 缩系/简化剩余系:对每个与 mm 互质的 r,再 krk_r 中任取一个代表元构成膜 m 的一个缩系,若 gcd(x,m)=1\gcd(x,m)=1 则将缩系中每个数都乘 x 后仍构成膜 m 的缩系。

Theorems

Bézout’s identity

ax+by=cax+by=c 有整数解的充要条件是 gcd(a,b)c\gcd(a,b)|c

proof.\text{proof.}

可以利用无穷递降法证明之。

Legendre theorem

vp(x)v_p(x) 表示 xx 的质因数分解中 pp 的系数,则 vp(n!)=i=1npi=nSp(n)p1v_p(n!)=\sum_{i=1}\lfloor\frac{n}{p^i}\rfloor=\frac{n-S_p(n)}{p-1},其中 Sp(n)S_p(n) 表示 nnpp 进制下的数位和。

proof.\text{proof.}

1,2,,n1,2,\dots,npp 的指数为 rr 的有 nrn_r 个,那么

vp(n!)=n1+2n2+3n3+=r1rnr=(n1+n2+)+(n2+n3+)+(n3+)=N1+N2+v_p(n!)=n_1+2n_2+3n_3+\dots=\sum_{r\geq 1}rn_r \\=(n_1+n_2+\dots)+(n_2+n_3+\dots)+(n_3+\dots)=N_1+N_2+\dots

其中 NkN_k 恰好是 1,2,,n1,2,\dots,n 中能被 pkp^k 除尽的数的个数,即 Nk=npkN_k=\lfloor\frac{n}{p^k}\rfloorQ.E.D.\text{Q.E.D.}

Kummer’s theorem

vp((nm))=Sp(m)+Sp(nm)Sp(n)p1v_p(\binom{n}{m})=\frac{S_p(m)+S_p(n-m)-S_p(n)}{p-1}

可以用 Legendre theorem 证明之。

Wilson’s theorem

(p1)!1(modp)(p-1)!\equiv -1 \pmod p,等价于 pp 是素数。

proof.\text{proof.}

原式等价于方程 px+(p1)!y=1px+(p-1)!y=-1,方程显然有解,且若 pp 不是质数则方程无解。Q.E.D.\text{Q.E.D.}

Fermat’s little theorem

pp 为素数,gcd(a,p)=1\gcd(a,p)=1,则 ap11(modp)a^{p-1}\equiv1\pmod p.

另外一种更常用的表示是 ap2a1(modp)a^{p-2}\equiv a^{-1}\pmod p.

proof.\text{proof.}

归。可知 1p1(modp)1^p\equiv1\pmod p 显然成立,若 apa(modp)a^p\equiv a\pmod p 成立,则

(a+1)p=i=0p(ppi)ai(a+1)^p=\sum_{i=0}^p \dbinom{p}{p-i} a^i

由于 (pk)=p(p1)(p2)(pk+1)k!\dbinom{p}{k}=\frac{p(p-1)(p-2)\dots(p-k+1)}{k!},于是 k[1n),(pk)0(modp)\forall k\in [1\dots n),\dbinom{p}{k}\equiv 0\pmod p,于是 (a+1)pap+1a+1(a+1)^p\equiv a^p+1\equiv a+1,由归纳定理,可知所证成立。Q.E.D.\text{Q.E.D.}

Euler’s theorem

gcd(a,m)=1\gcd(a,m)=1,则 aφ(m)1(modm)a^{\varphi(m)}\equiv 1\pmod m.

proof.\text{proof.}

r1,r2,,rφ(m)r_1,r_2,\dots,r_{\varphi(m)}mm 的一个简化剩余系,那么 ar1,ar2,,arφ(m)ar_1,ar_2,\dots,ar_{\varphi(m)} 也是 mm 的一个简化剩余系,于是

i=1φ(m)rii=1φ(m)ari(modm)\prod_{i=1}^{\varphi(m)} r_i\equiv \prod_{i=1}^{\varphi(m)}ar_i\pmod m

i=1φ(m)ri\prod_{i=1}^{\varphi(m)} r_i 可约去,于是命题得证。\square

mm 为质数时,φ(m)=m1\varphi(m)=m-1,于是得到 Fermat’s little theorem。

extend Euler’s theorem

ab{abmodφ(m)gcd(a,m)=1abgcd(a,m)1,b<φ(m)a(bmodφ(m))+φ(m)otherwise(modm)a^b\equiv \begin{cases} a^{b\bmod \varphi(m)}& \gcd(a,m)=1 \\a^b& \gcd(a,m)\not =1,b<\varphi(m) \\a^{(b\bmod \varphi(m))+\varphi(m)} & \text{otherwise} \end{cases} \pmod m

Chinese Remainder Theorem,CRT

一元线性同余方程组

{xa1(modm1)xa2(modm2)xan(modmn)\begin{cases} x\equiv a_1\pmod{m_1}\\ x\equiv a_2\pmod{m_2}\\ \dots\\ x\equiv a_n\pmod{m_n} \end{cases}

有解,并且解可以被构造。其中 nn 两两互质。

构造方式是:

M=i=1nmiM=\prod_{i=1}^n m_i,以及 Mi=M/miM_i=M/m_i,设 tit_i 使得 tiMi1(modmi)t_iM_i\equiv 1\pmod{m_i}。于是通解形式为

x0=i=1naitiMix_0=\sum_{i=1}^na_it_iM_i

所有解是 {kM+x0;kZ}\{kM+x_0;k\in \mathbb Z\}

这个东西很漂亮,难的是把构造想出来。

exCRT

如果 mim_i 并不一一互质,exCRT 告诉我们这种情况下仍然有解且给出了构造方式。

我们发现所有闪光的点子在这里似乎都失效了,于是考虑朴素一点的方法。一个同余方程我们会解,于是考虑把多个同余方程合并成一个。先考虑两个。

{xai(modmi)xaj(modmj)\begin{cases} x\equiv a_i\pmod{m_i}\\ x\equiv a_j\pmod{m_j} \end{cases}

先将其转化为不定方程的形式

x=aip+mi=ajq+mj(p,qZ)    aipajq=mjmix=a_ip+m_i=a_jq+m_j(p,q\in \mathbb Z) \\ \iff a_ip-a_jq=m_j-m_i

如果 (ai,aj)∤(mjmi)(a_i,a_j)\not | (m_j-m_i),那么无解,否则可以拿扩欧算。整个过程朴素到没有亮点。

Lucas’ theorem

用途是求很大的 (nk)(modp)\dbinom{n}{k}\pmod p

引理 1:若 n0,pn\not=0,p,则 (pn)0(modp)\dbinom{p}{n}\equiv 0\pmod p

拿阶乘表示出来就行了。

引理 2:设 f(x)=axn+bxmf(x)=ax^n+bx^m,则有

fp(x)f(xp)(modp)f^p(x)\equiv f(x^p) \pmod p

proof.\text{proof.}

fp(x)=(axn+bxm)p=k=0p(pk)(axn)k(bxm)pkapxpn+bpxpma(xp)n+b(xp)m=f(xp)f^p(x)=(ax^n+bx_m)^p \\=\sum_{k=0}^p \dbinom{p}{k}(ax^n)^k(bx^m)^{p-k} \\\equiv a^px^{pn}+b^px^{pm} \\ \equiv a(x^p)^n+b(x^p)^m=f(x^p)

Q.E.D.\text{Q.E.D.}

Lucas 定理:

(nk)(n/pk/p)(nmodpkmodp)(modp)\dbinom{n}{k}\equiv \dbinom{\lfloor n/p\rfloor}{\lfloor k/p \rfloor}\dbinom{n\bmod p}{k\bmod p} \pmod p

proof.\text{proof.}

考察 (nk)\dbinom{n}{k} 的生成函数 (1+x)n(1+x)^n

(1+x)n=(1+x)pn/p(1+x)nmodp(1+x)^n=(1+x)^{p\lfloor n/p\rfloor}(1+x)^{n\bmod p}

由引理 2,可知

(1+x)n(1+xp)n/p(1+x)nmodp(modp)(1+x)^n\equiv(1+x^p)^{\lfloor n/p\rfloor}(1+x)^{n\bmod p}\pmod p

xkx^k 的系数就是 (nk)modp\dbinom{n}{k}\bmod p,并且把 kk 拆在两边的方式是唯一的,也即

k=pnp+(nmodp)k=p\lfloor\frac{n}{p}\rfloor+(n\bmod p)

于是定理得证。\square

exLucas

如果模数 mm 不是质数怎么办?

mm 质因数分解,设

m=i=1spiαim=\prod_{i=1}^s p_i^{\alpha_i}

分别计算 (nk)modpiαi\dbinom{n}{k}\bmod p_i^{\alpha_i},得到 ss 个同余方程,然后就可以使用 CRT 直接算。

Functions

Common productive functions

  • 除数函数 σk(n)=dndk\sigma_{k}(n)=\sum_{d|n}d^k

  • Euler\text{Euler} 函数 φ(n)=i=1n[gcd(i,n)=1]\varphi(n)=\sum_{i=1}^n[\gcd(i,n)=1]

  • Mo¨bius\text{M\"{o}bius} 函数 μ(n)={1n=1(1)knk个不同质数之积0otherwise\mu(n)=\begin{cases}1&n=1\\(-1)^k&n为k个不同质数之积\\0&\text{otherwise}\end{cases}

常见的完全积性函数:

  • 幂函数 Idk(n)=nk\text{Id}_k(n)=n^kId1\text{Id}_1 简记为 Id\text{Id}

  • 单位函数 ϵ(n)=[n=1]\epsilon(n)=[n=1]

Dirichlet convolution

定义 * 运算表示:

(fg)(n)=dnf(d)g(nd)(f*g)(n)=\sum_{d|n}f(d)g(\frac{n}{d})

Dirichlet 卷积有以下性质:

  • 交换律:fg=gff*g=g*f

  • 结合率:(fg)h=f(gh)(f*g)*h=f*(g*h)

  • 分配率:f(g+h)=fg+fhf*(g+h)=f*g+f*h

  • 单位元:fϵ=ff*\epsilon=f,其中 ϵ(n)=[n=1]\epsilon(n)=[n=1]

  • f,gf,g 都是积性函数,则 fgf*g 也是积性函数

证明是显然的,这里不放了。

常见的卷积有:

  • μ1=ϵ\mu * 1 = \epsilon
  • φId=1\varphi * \text{Id}=1
  • φ1=Id\varphi * 1 = \text{Id}
  • d(i,j)=xiyi[gcd(x,y)=1]d(i,j)=\sum\limits_{x|i}\sum\limits_{y|i}[\gcd(x,y)=1]
  • φ(xy)=φ(x)φ(y)gcd(x,y)φ(gcd(x,y))\varphi(xy)=\frac{\varphi(x)\varphi(y)\gcd(x,y)}{\varphi(\gcd(x,y))}

证明过程放在每个题里。

Mo¨bius Function\text{M}\ddot{\text{o}}\text{bius Function}

定义莫比乌斯函数 μ(n)\mu(n)。设 n=i=1kpiαin=\prod\limits_{i=1}^kp_i^{\alpha_i},有

μ(n)={1n=10i,αi2(1)kotherwise\mu(n)=\begin{cases} 1 & n=1\\ 0 & \exists i,\alpha_{i}\geq 2\\ (-1)^k & \text{otherwise} \end{cases}

可知这个函数是积性函数,于是可以线性筛求 μ\mu。代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
void euler(int n)
{
mu[1] = 1;
for (int i = 2; i <= n; i++)
{
if (!v[i]) p[++pcnt] = i, mu[i] = -1;
for (int j = 1; j <= pcnt && i * p[j] <= n; j++)
{
v[i * p[j]] = 1;
if (i % p[j] == 0) break;
mu[i * p[j]] = -mu[i];
}
}
}

Mo¨bius Inversion\text{M}\ddot{\text{o}}\text{bius Inversion}

如果两个数论函数 f,gf,g 满足:

f(n)=dng(d)f(n)=\sum_{d|n}g(d)

则它们也同时满足:

g(n)=dnμ(d)f(nd)g(n)=\sum_{d|n}\mu(d)f(\frac{n}{d})

反之亦然,即 f=g1    g=μff=g*1\iff g=\mu*f

proof.\text{proof.}

左推右,考虑凑出 fμf*\mu,所以对两边都卷上 μ\mu,有

fμ=g1μf*\mu=g*1*\mu

于是只要证 1μ=ϵ1*\mu=\epsilon 就行了。这个引理十分重要,这里证一下。

考虑利用算贡献的方法,考虑每个因数会选出多少个质因数,考虑这个数量的贡献求和,来改写式子左边有,

LHS=dnμ(d)=i=0k(1)i(ki)=(11)n=ϵ(n)=RHS,\text{LHS}=\sum_{d|n}\mu(d)=\sum_{i=0}^k(-1)^i\begin{pmatrix} k\\ i\end{pmatrix}=(1-1)^n=\epsilon(n)=\text{RHS},\square

于是有 fμ=gϵ=gf*\mu=g*\epsilon=g,充分性得证。

必要性只需要把两边都卷上 11 就行了。Q.E.D.\text{Q.E.D.}

在基础应用中,最常用的是证明过程中顺手证的引理,但是正牌莫反会有更多的用处。但我们先不急着去做题,莫比乌斯反演还有一种非卷积形式:

f,gf,g 为数论函数,tt 为完全积性函数且 t(1)=1t(1)=1,有

f(n)=k=1nt(k)g(nk)    g(n)=k=1nt(k)μ(k)f(nk)f(n)=\sum_{k=1}^n t(k)g(\lfloor\frac{n}{k}\rfloor)\iff g(n)=\sum_{k=1}^nt(k)\mu(k)f(\lfloor\frac{n}{k}\rfloor)

proof.\text{proof.}

左推右,有

k=1nμ(k)t(k)f(nk)=k=1nμ(k)t(k)i=1nkt(i)g(nki)\sum_{k=1}^n\mu(k)t(k)f(\lfloor\frac{n}{k}\rfloor)=\sum_{k=1}^n\mu(k)t(k)\sum_{i=1}^{\lfloor\frac{n}{k}\rfloor}t(i)g(\lfloor\frac{n}{ki}\rfloor)

枚举 kiki,有

k=1nμ(k)t(k)f(nk)=j=1ng(nj)ijt(i)t(ji)μ(i)=j=1ng(nj)t(j)ijμ(i)\sum_{k=1}^n\mu(k)t(k)f(\lfloor\frac{n}{k}\rfloor)=\sum_{j=1}^ng(\lfloor\frac{n}{j}\rfloor)\sum_{i|j}t(i)t(\frac{j}{i})\mu(i)=\sum_{j=1}^ng(\lfloor\frac{n}{j}\rfloor)t(j)\sum_{i|j}\mu(i)

由引理,得

k=1nμ(k)t(k)f(nk)=j=1ng(nj)t(j)ϵ(j)=g(n)t(1)=g(n)\sum_{k=1}^n\mu(k)t(k)f(\lfloor\frac{n}{k}\rfloor) = \sum_{j=1}^ng(\lfloor\frac{n}{j}\rfloor)t(j)\epsilon(j)=g(n)t(1)=g(n)

反之亦然。Q.E.D.\text{Q.E.D.}

Basical Problems

1.GCD SUM

i=1nj=1ngcd(i,j)\sum_{i=1}^{n}\sum_{j=1}^n\gcd(i,j)

sol.\text{sol.}

先证引理:φ(n)=dnμ(d)nd\varphi(n)=\sum_{d|n}\mu(d)\frac{n}{d}

ϕ(n)=i=1n[gcd(i,n)=1]=i=1ndgcd(i,n)μ(d)\phi(n)=\sum_{i=1}^n[\gcd(i,n)=1]=\sum_{i=1}^n\sum_{d|\gcd(i,n)}\mu(d)

然后考虑 μ(d)\mu(d) 的贡献,有

φ(n)=dnμ(d)nd\varphi(n)=\sum_{d|n}\mu(d)\frac{n}{d}

故引理得证。这个引理也很常用。

Ans=i=1nj=1nd=1n[gcd(i,j)=d]d=d=1ndi=1ndj=1ndϵ(gcd(i,j))=d=1ndi=1ndj=1ndkgcd(i,j)μ(k)=d=1ndk=1nμ(k)ndk2=D=1nnD2dDdμ(Dd)=D=1nnD2φ(n)\text{Ans}=\sum_{i=1}^n\sum_{j=1}^n\sum_{d=1}^n[\gcd(i,j)=d]d \\=\sum_{d=1}^nd\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor\frac{n}{d}\rfloor}\epsilon(\gcd(i,j)) \\=\sum_{d=1}^nd\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{k|\gcd(i,j)}\mu(k) \\=\sum_{d=1}^nd\sum_{k=1}^n\mu(k)\lfloor\frac{n}{dk}\rfloor^2 \\=\sum_{D=1}^n\lfloor\frac{n}{D}\rfloor^2\sum_{d|D}d\mu(\frac{D}{d})\\=\sum_{D=1}^n\lfloor\frac{n}{D}\rfloor^2\varphi(n)

其中第一行到第二行我们把 dd 提到前面去,改枚举 i,ji,jid,jd\frac{i}{d},\frac{j}{d},把 [gcd(i,j)=d][\gcd(i,j)=d] 转化为 gcd(id,jd)=1\gcd(\frac{i}{d},\frac{j}{d})=1,就可以利用莫反了。所以第二步到第三步就是生套莫反公式,第三步到第四步是考虑 μ(k)\mu(k) 的贡献,然后再改求和顺序。这样线性筛 φ\varphi,求前缀和,然后整除分块就可以 O(n)O(n) 做了,瓶颈是线性筛。

请格外注意过程中对和式的处理。


2.Crash 的数字表格 / JZPTAB

i=1nj=1mlcm(i,j)\sum_{i=1}^n\sum_{j=1}^m\operatorname{lcm}(i,j)

sol.\text{sol.}

Ans=i=1nj=1mlcm(i,j)=i=1nj=1mijgcd(i,j)\text{Ans}=\sum_{i=1}^n\sum_{j=1}^m\operatorname{lcm}(i,j)=\sum_{i=1}^n\sum_{j=1}^m\frac{ij}{\gcd(i,j)}

然后利用经典算贡献套路把 dd 提出来,枚举 i,ji,j 改为枚举 di,djdi,dj 来枚举 gcd(i,j)\gcd(i,j),不妨设 nmn\leq m,有

Ans=d=1ndi=1ndj=1md[gcd(i,j)=1]ij=d=1ndi=1ndj=1mdϵ(gcd(i,j))ij\text{Ans}=\sum_{d=1}^n d\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{d}\rfloor}[\gcd(i,j)=1]ij=\sum_{d=1}^n d\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{d}\rfloor}\epsilon(\gcd(i,j))ij

由莫比乌斯反演公式,我们有 dnμ(d)=ϵ(n)\sum_{d|n}\mu(d)=\epsilon(n),于是原式转化为

d=1ni=1ndj=1mdxgcd(i,j)μ(x)ij\sum_{d=1}^n \sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{d}\rfloor}\sum_{x|\gcd(i,j)}\mu(x)ij

然后再利用枚举 gcd\gcd 的套路,有

Ans=d=1ndx=1ndμ(x)xi=1ndxj=1mdx2ij=d=1ndx=1ndμ(x)x2(i=1ndxi)(j=1ndxj)\text{Ans}=\sum_{d=1}^n d\sum_{x=1}^{\lfloor\frac{n}{d}\rfloor}\mu(x)\sum_{xi=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{xj=1}^{\lfloor\frac{m}{d}\rfloor}x^2ij=\sum_{d=1}^nd\sum_{x=1}^{\lfloor\frac{n}{d}\rfloor}\mu(x)x^2(\sum_{i=1}^{\lfloor\frac{n}{dx}\rfloor}i)(\sum_{j=1}^{\lfloor\frac{n}{dx}\rfloor}j)

s(x)=i=1xis(x)=\sum_{i=1}^x i,于是有

Ans=d=1nx=1ndμ(x)x2s(ndx)s(mdx)\text{Ans}=\sum_{d=1}^n\sum_{x=1}^{\lfloor\frac{n}{d}\rfloor}\mu(x)x^2s(\lfloor\frac{n}{dx}\rfloor)s(\lfloor\frac{m}{dx}\rfloor)

s(ndx)s(mdx)s(\lfloor\frac{n}{dx}\rfloor)s(\lfloor\frac{m}{dx}\rfloor) 提前面,就有

Ans=D=1ns(nD)s(mD)db=Ddb2μ(b)=D=1ns(nD)s(mD)DbDbμ(b)\text{Ans}=\sum_{D=1}^ns(\lfloor\frac{n}{D}\rfloor)s(\lfloor\frac{m}{D}\rfloor)\sum_{db=D}db^2\mu(b)=\sum_{D=1}^ns(\lfloor\frac{n}{D}\rfloor)s(\lfloor\frac{m}{D}\rfloor)D\sum_{b|D}b\mu(b)

然后预处理 bμ(b)b\mu(b) 的 Dirichlet 前缀和,然后整除分块就能做了。


3.约数个数和

d(x)d(x) 表示 xx 的约数个数,求

i=1nj=1md(ij)\sum_{i=1}^n\sum_{j=1}^md(ij)

sol.\text{sol.}

先想着利用 dd 的积性,把 d(ij)d(ij) 转化为 d(i)d(j)d(gcd(i,j))\frac{d(i)d(j)}{d(\gcd(i,j))},发现推得

Ans=i=1m1d(i)(j=1nd(j))(j=1md(j))\text{Ans}=\sum_{i=1}^m\frac{1}{d(i)}\cdot(\sum_{j=1}^nd(j))\cdot(\sum_{j=1}^md(j))

如果所求有取模,那直接预处理 sumi=1nd(i)sum_{i=1}^nd(i)i=1n1d(i)\sum_{i=1}^n\frac{1}{d(i)} 就可以做到 O(n)O(\sqrt{n}) 了,但这个题没有取模的要求,考虑直接求 d(ij)d(ij)。我们有引理:

d(xy)=ixjy[gcd(i,j)=1]d(xy)=\sum_{i|x}\sum_{j|y}[\gcd(i,j)=1]

proof.\text{proof.} 不会,抄的题解,但感觉很有用,记一下以后常看看。

然后莫反的过程就比较平凡了。

加强一下:[SDOI2018] 旧试题

i=1Aj=1Bk=1Cd(ijk)\sum_{i=1}^A\sum_{j=1}^B\sum_{k=1}^Cd(ijk)

sol.\text{sol.}

还不会

Du’s Algorithm

ff 为数论函数,要求

S(n)=i=1nf(i)S(n)=\sum_{i=1}^nf(i)

考虑构造一个数论函数 gg,我们有恒等式

i=1n(fg)(i)=i=1ng(i)S(ni)\sum_{i=1}^n(f*g)(i)=\sum_{i=1}^ng(i)S(\lfloor\frac{n}{i}\rfloor)

得到递归式

g(1)S(n)=i=1n(fg)(i)i=2ng(i)S(ni)g(1)S(n)=\sum_{i=1}^n(f*g)(i)-\sum_{i=2}^ng(i)S(\lfloor\frac{n}{i}\rfloor)

熟知 ni\lfloor\frac{n}{i}\rfloor 的取值为 O(n)O(\sqrt{n}) 的,假如可以快速对 (fg)(i)(f*g)(i)g(i)g(i) 的和,可以根据 ni\lfloor\frac{n}{i}\rfloor 的值进行数论分块,进行一遍求和的时间复杂度就是 O(n)O(\sqrt n),然后总的复杂度就是

i=1nO(i)+i=1nO(ni)\sum_{i=1}^{\lfloor\sqrt{n}\rfloor}O(\sqrt i)+\sum_{i=1}^{\lfloor\sqrt n\rfloor}O(\sqrt{\frac{n}{i}})

(温情提示:前方积分预警)

后面一部分明显比前一部分大,所以考虑算后面的。

i=1nO(ni)O(0nnxdx)=O(n34)\sum_{i=1}^{\lfloor\sqrt n\rfloor}O(\sqrt{\frac{n}{i}})\approx O(\int_{0}^{\sqrt n}\sqrt{\frac{n}{x}}{\rm d}x)=O(n^{\frac{3}{4}})

你可能说积分算大了,但你舍掉左边那一部分本来就算小了啊。

考虑能否优化这个过程,我们考虑预处理一部分,然后剩下部分直接调用算好的。我们设预处理了前 kkSS 并假设预处理的复杂度为 O(n)O(n),那么复杂度就是

O(k)+O(i=2nkni)O(k+0nknxdx)=O(k+nk)O(k)+O(\sum_{i=2}^{\lfloor\frac{n}{k}\rfloor}\sqrt{\frac{n}{i}})\approx O(k+\int_{0}^{\frac{n}{k}}\sqrt{\frac{n}{x}}{\rm d}x)=O(k+\frac{n}{\sqrt k})

由均值不等式可知当 kkn23n^{\frac{2}{3}} 是复杂度最小,为 O(n23)O(n^{\frac{2}{3}})

A Simple Math Problem

i=1nj=1nijgcd(i,j)\sum_{i=1}^n\sum_{j=1}^nij\gcd(i,j)

sol.\text{sol.}

利用莫反常见套路推出来

Ans=T=1n(i=1nTi)2T2φ(T)\text{Ans}=\sum_{T=1}^n(\sum_{i=1}^{\lfloor\frac{n}{T}\rfloor}i)^2T^2\varphi(T)

然后考虑算 S(n)=i=1ni2φ(i)S(n)=\sum_{i=1}^ni^2\varphi(i)。我们套用杜教筛板子

g(1)S(n)=i=1n(fg)(i)i=2ng(i)S(ni)g(1)S(n)=\sum_{i=1}^n(f*g)(i)-\sum_{i=2}^ng(i)S(\lfloor\frac{n}{i}\rfloor)

我们想到 φ\varphi 的常见卷积

φ1=Id\varphi*1=\text{Id}

于是令 g(x)=x2g(x)=x^2,有

(gf)(i)=dnd2φ(d)i2d2=i2dnφ(d)=i3(g*f)(i)=\sum_{d|n}d^2\varphi(d)\frac{i^2}{d^2}=i^2\sum_{d|n}\varphi(d)=i^3

然后就可以快速地进行杜教筛。

Technologies

Miller–Rabin test

Pollard Rho Algorithm


Number Theory
https://lotus-grass.github.io/2025/08/21/number-theory/
作者
lotus_grass
发布于
2025年8月21日
许可协议