首先有一个结论$d(i*j)=sum limits _{xmid i} sum limits _{ymid j}left [ gcd(i,j)=1 ight ] $
结论有点难想,不过之后就比较简单了。
$sum limits _{i=1}^{N}sum limits _{j=1}^{M} sum limits _{xmid i} sum limits _{ymid j}left [ gcd(x,y)=1 ight ]$
$sum limits _{i=1}^{N} sum limits _{j=1}^{M} sum limits _{xmid i}sum limits _{ymid j}sum limits _{gmid gcd(i,j)}u(g)$
$sum limits _{x=1}^{N}sum limits _{{i}'=1}^left lfloor frac{N}{x} ight floor sum limits _{y=1}^{M}sum limits _{{j}'=1}^{left lfloor frac{M}{y} ight floor}sum limits _{gmid gcd(x,y)}u(g)$
$sum limits _{x=1}^{N}sum limits _{y=1}^{M} sum limits _{gmid gcd(x,y)}u(g) left lfloor frac{N}{xg} ight floor left lfloor frac{M}{yg} ight floor$
$sum limits _{g=1}^{min(N,M)} u(g)sum limits _{x=1}^{left lfloor frac{N}{g} ight floor}sum limits _{y=1}^{left lfloor frac{M}{g} ight floor}left lfloor frac{N}{xg} ight floor left lfloor frac{M}{yg} ight floor$
设$f(T)=sum limits _{T=1}^{N}left lfloor frac{N}{T} ight floor$
那么原式=$sum limits _{g=1}^{min(N,M)} u(g) f(left lfloor frac{N}{g} ight floor) f(left lfloor frac{M}{g} ight floor)$
整除分块预处理f函数就可以了。