Description
对正整数n,欧拉函数是小于或等于n的数中与n互质的数的数目。此函数以其首名研究者欧拉命名,它又称为Euler’s totient function、φ函数、欧拉商数等。例如:φ(8) = 4(Phi(8) = 4),因为1,3,5,7均和8互质。
S(n) = Phi(1) + Phi(2) + …… Phi(n),给出n,求S(n),例如:n = 5,S(n) = 1 + 1 + 2 + 2 + 4 = 10,定义Phi(1) = 1。由于结果很大,输出Mod 1000000007的结果。
Solution
跟莫比乌斯函数之和
设f(n)=∑ni=1φ(i)
所以ans=f(b)−f(a−1)
由于与莫比乌斯函数之和类似,脑袋O(1)得解。
∑d|nφ(d)=n关于欧拉函数的一个性质
∑ni=1∑d|iφ(d)=(n+1)∗n/2
熟练掌握内层外移的话,这种东西只可以转化的。
这个式子=∑nd=1∑ndi=1φ(i)
再带入f数组转化一下。
这个式子=∑nd=1f(nd)
因为∑nd=2f(nd)+f(n)=(n+1)∗n/2
所以f(n)=(n+1)∗n/2−∑nd=2f(nd)
然后再分块一下。
注意开long long就好了。
Code