我们可以从1开始枚举最大公约数,枚举到n,求出满足gcd(x,y)==i,1<=x,y<=n
,的x,y对数m,i*m累加起来就是答案。
问题是如何求满足gcd(x,y)==i,1<=x,y<=n
,的x,y对数呢?
我们知道满足gcd(x,y)==1,1<=x,y<=n
,的x,y对数是 2 ∗ ∑ 1 n p h i [ i ] − 1 2*\sum_{1}^{n} phi[i] -1 2∗∑1nphi[i]−1,
我们令x=a*i
,y=b*i
,gcd(x,y)==i
就可以表示成gcd(a,b)==1,1<=b*i,a*i<=n
,
所以转化成了gcd为1的情况。答案就是: 2 ∗ ∑ 1 n