首先我们很容易知道 当p是质数的时候 , f(p)=2*p-1,因为1到p-1都与p互质,而p和它本身的最大公约数是p。
我们知道任何数可以转化成质数的幂的乘积。
那么我们首先求只有一种质数的情况:f(p^k)。
考虑f(p^2)=2*p^2-1 + p*(p-1) -(p-1) : 先假设所有小于的p^2的数都与它互质,那么结果是2*p^2-1,而其实有p-1个数是p的倍数 并且他们 与 p^2的最大公约数是p,然后最后再减去第一部分多加的p-1个1。最后 f(p^2)= p*(3p-2)
考虑f(p^3)=2*p^3-1 + p*(p^2-p)+p^2*(p-1) -(p^2-1) : 先假设所有小于的p^3的数都与它互质,那么结果是2*p^3-1,而其实有p^2-p个数是p的倍数(不包括是p^2倍数的),并且他们 与 p^3的最大公约数是p;还有p-1个数是p^2的倍数(不包括p^3倍数的,也就是不包括它自己) 并且他们 与 p^3的最大公约数是p^2,然后最后再减去第一部分多加的p^2-1个1。最后 f(p^3)= p*(4p-3)
....
同理,我们得到f(p^k)=p*( (k+1)*p- k).
那么如果有多种质数的乘积呢?
考虑最简单的情况,f(p*q) ,p、q都是质数
根据上面的想法,同理得 f(p*q)=2*(p*q)-1 + p*(q-1)+q*(p-1) - (p-1+q-1) = (2p-1)(2q-1)=f(p)*f(q)。
由此,我们大胆假设,幂大于1的时候,也适用同样的公式,在此就不多加证明了。
现在如何求解已经显而易见了。