一道题

求:$sum_{i=1}^{n}sum_{d|i}(d,frac{i}{d})$.

重要套路:$(a,b)=d,ableqslant n$ 求这个(a,b)的个数,又要保证后面的限制,可以这样缩:符合要求的$(a,b)$一定有$x,y$使得$(x,y)=1,xd*yd<=n$,因此$xy<=frac{n}{d^2}$。

$sum_{i=1}^{n}sum_{d|i}(d,frac{i}{d})$

$=sum_{d}dsum _{a}sum _{b}((a,b)=d),ab<=n$

$=sum_{d}dsum_{x}sum_{y}I ((x,y)),xy<=frac{n}{d^2}$

$=sum_{d}d sum_{i=1}^{frac{n}{d^2}}sum_{d'|i}I ((d',frac{i}{d'}))$

$=sum_{d}d sum_{i=1}^{frac{n}{d^2}}sum_{d'|i}sum_{t|d'wedge t|frac{i}{d'}}mu(t)$

$=sum_{d}dsum_{t}mu(t)sum_{a}sum_{b}(a*bleq frac{n}{d^2},t|a,t|b)$

$=sum_{d}dsum_{t}mu(t)sum_{i=1}^{frac{n}{d^2t^2}}d(i)$

闪一句,$d(i)$表示$i$的因数个数。

$=sum_{w=1}^{n}varphi (w)sum_{i=1}^{frac{n}{w^2}}d(i)$

前面那部分phi只用枚举到根号即可。而后面的d(i)有

$sum_{i=1}^{n}d(i)=sum_{i=1}^{n}left lfloor frac{n}{i} ight floor$

闪一句,这里考虑每个数作为几个数的因数即可。

然后就可以根号套根号,复杂度大概是$sqrt{n}lnn$。

原文地址:https://www.cnblogs.com/Blue233333/p/8309629.html