大致题意:让你求
。根据莫比乌斯函数的定义,对于mu(i)如果i可以分解为任意一个质数的平方分解,那么函数值为0。所以对于这个求和的式子来说,i有意义,当且仅当gcd(i,n)==1。而根据莫比乌斯函数的积性,当gcd(i,n)==1时,有
。所以说这个mu(n)完全可以提取到外面,这样求和式子就是:
显然,如果mu(n)==0,那么答案也是0。现在考虑mu(n)!=0的时候怎么计算。
这是一个积性函数的求和,只不过是去掉了某些项。然后这个积性函数的质数幂为0,很好算,取质数时的函数值也可以用多项式表示,符合Min25筛的条件,所以可以考虑用Min25筛来做。
Min25筛分为三个部分,一个是质数部分,一个是合数部分,最后是1。质数部分,就是质数的莫比乌斯函数之和,而质数对应的莫比乌斯函数是-1,所以相当于是求1..n中质数个数再乘以-1即可。但不管怎么说我们还是要按照Min25筛的套路来。我们令g(n,j)表示从1到n所有的i中,满足要么i自己是质数,要么i的最小质因子大于第j个质数的数字个数。然后带入递推公式:
这里的F(Pj)就是mu(Pj),
等于
也即
。这样式子就是
质数部分解决,然后看总共的。令S(n,j)表示从1累加到n的mu(i),同样的,i要么是质数,要么最小质因子大于第j个质数。带入公式有:
但是机智的读者可能发现这个是不对的。如果我们知识求mu(i)的前缀和,这样没问题,但是我们现在算的对于i是有条件的,所以说我们得减去一些不合法的i,也即gcd(i,n)>1的i。而这里只要我们做到在选取质数的时候不选取n的质因子即可,所以我们可以改一下这个式子,不妨设在n有x个大于等于Pj的质因子,那么有式子:
最后再加上i为1的结果就是最后答案。具体见代码: