求gcd(1,n)+...+gcd(n,n)的和f(n)

来源:互联网 发布:数据库系统组成 编辑:程序博客网 时间:2024/05/16 15:21

首先我们很容易知道 当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的时候,也适用同样的公式,在此就不多加证明了。

现在如何求解已经显而易见了。

0 0
原创粉丝点击