杜教筛刷题总结

写在前面:

其实只有一道题

DZY Loves Math IV

n很小可以考虑枚举1到n
对于一个枚举出来的n
$S(n,m)=\sum\limits_{i=1}^{m}\varphi{(n*i)}$

$S(n,m)=\sum\limits_{i=1}^{m}\varphi{(\frac{n}{(n,i)})}*\varphi{(i)}*(n,i)$

$S(n,m)=\sum\limits_{i=1}^{m}\varphi{(\frac{n}{(n,i)})}*\varphi{(i)}\sum\limits_{j|(n,i)}\varphi{(j)}$

$S(n,m)=\sum\limits_{i=1}^{m}\varphi{(i)}\sum\limits_{j|(n,i)}\varphi{(\frac{n}{j})}$

$S(n,m)=\sum\limits_{j|n}\varphi{(\frac{n}{j})}\sum\limits_{i=1}^{\lfloor \frac{m}{j} \rfloor}\varphi{(i*j)}$

$S(n,m)=\sum\limits_{j|n}\varphi{(\frac{n}{j})}*S(j,\lfloor \frac{m}{j} \rfloor)$

之后枚举n的约数复杂度还是不对

所以考虑把$n$拆为$x*y$

其中$x$为$n$的每个质因子的1次方的乘积,$y=\frac{n}{x}$

所以便有

$S(n,m)=y*\sum\limits_{j|x}\varphi{(\frac{x}{j})}*S(j,\lfloor \frac{m}{j} \rfloor)$

递归解决即可

递归边界:
1>$n==1$杜教筛求$ans=\sum\limits_{i=1}^{m}\varphi{(i)}$
2>$m<=1\ ans=m*\varphi{(n)}$

猜你喜欢

转载自www.cnblogs.com/AthosD/p/12124630.html