积性函数前缀和-我的总结

积性函数前缀和-我的总结

【写在前面】

用了一个多星期将这部分大体弄懂了,东西太多,有不少技巧,本身从新写了一下,记录本身的理解。内容与原文基本一致,在其基础上加上了一些我感受比较重要的但他没有详细说明的东西。如下都是我逐字打出来的。若是有什么错误,请指出。html

前置技能里面的东西须要充分理解和记忆,在后面推导过程当中会屡次用到前置技能里面的东西。ios

转载出处:c++

author: skywalkert
original article: http://blog.csdn.net/skywalkert/article/details/50500009web

【经常使用技巧】

k = 1 n d k d k = k = 1 n d = 1 n k d k d = d = 1 n k d d d k = d = 1 n k = 1 n d d k d = d = 1 n d k d k = k = 1 n k d d d k 1 [ g c d ( i , j ) = 1 ] , k g c d ( i , j ) μ ( k ) 2 i = 1 n j = 1 n [ g c d ( i , j ) = 1 ] = 2 i = 1 n j = 1 i [ g c d ( i , j ) = 1 ] i = 1 n [ g c d ( i , i ) = 1 ] = ( 2 i = 1 n φ ( i ) ) 1 3 i = 1 n i j = 1 n [ g c d ( i , j ) = 1 ] j = 2 i = 1 n i j = 1 i [ g c d ( i , j ) = 1 ] j i = 1 n [ g c d ( i , i ) = 1 ] i = ( 2 i = 1 n i i φ ( i ) + [ i = 1 ] 2 ) 1 = ( i = 1 n i 2 φ ( i ) + [ i = 1 ] ) 1 4 w ( n ) n 2 w ( n ) n f ( n ) = 2 w ( n ) = d n μ 2 ( d ) σ 0 ( n 2 ) = d n f ( d ) = d n k d μ 2 ( k ) i = 1 10 σ ( i 2 ) 5 n g ( n ) = i = 1 n μ 2 ( i ) = i = 1 n μ ( i ) n i 2 6 d n i n d = d n i d d n i d j n 7 σ 0 ( i j ) = d i j = x i y j [ g c d ( i , j ) = 1 ] σ 1 ( i j ) = d i j d = x i y j y n x [ g c d ( i , j ) = 1 ] \sum_{k=1}^n\sum_{d|k}d\cdot k=\sum_{k=1}^n\sum_{d=1}^{\frac nk}d\cdot k\cdot d=\sum_{d=1}^n\sum_{k|d}d\cdot \frac dk=\sum_{d=1}^n\sum_{k=1}^{\frac nd}d\cdot k\cdot d=\sum_{d=1}^n\sum_{d|k}d\cdot k=\sum_{k=1}^n\sum_{k|d} d\cdot\frac dk\\ 上式为约数,倍数之间重要的变换,须要充分理解并熟练运用。\\ |\\ \\一、遇到[gcd(i,j)=1],考虑将其转换为\sum_{k|gcd(i,j)}\mu(k)\\ 二、对于\sum_{i=1}^n\sum_{j=1}^n[gcd(i,j)=1]=2\sum_{i=1}^n\sum_{j=1}^i[gcd(i,j)=1]-\sum_{i=1}^n[gcd(i,i)=1]=\big(2\sum_{i=1}^n\varphi(i)\big)-1\\ 三、\sum_{i=1}^{n}i\sum_{j=1}^{n}[gcd(i,j)=1]\cdot j=2\sum_{i=1}^{n}i\sum_{j=1}^i[gcd(i,j)=1]\cdot j-\sum_{i=1}^n[gcd(i,i)=1]\cdot i\\ =\bigg(2\sum_{i=1}^ni\frac{i\cdot\varphi(i)+[i=1]}{2}\bigg)-1=\bigg(\sum_{i=1}^ni^2\cdot\varphi(i)+[i=1]\bigg)-1\\ 四、记w(n)为n的质因子的个数,则2^{w(n)}为n的约数中无平方因子的个数,则f(n)=2^{w(n)}=\sum_{d|n}\mu^2(d)\\ 则\sigma_0(n^2)=\sum_{d|n}f(d)=\sum_{d|n}\sum_{k|d}\mu^2(k)^,附个表\sum_{i=1}^{10}\sigma(i^2)\\ 五、n之内非彻底平方数的个数g(n)=\sum_{i=1}^n\mu^2(i)=\sum_{i=1}^{\sqrt{n}}\mu(i)\cdot\lfloor\frac n{i^2}\rfloor\\ 六、\sum_{d|n}\sum_i^{\frac{n}{d}}=\sum_{d|n}\sum_i^{d},且d|n能够用埃筛预处理,i为d,j为n。\\ 七、\sigma_0(i\cdot j)=\sum_{d|i\cdot j}=\sum_{x|i}\sum_{y|j}[gcd(i,j)=1],\sigma_1(i\cdot j)=\sum_{d|i\cdot j}d=\sum_{x|i}\sum_{y|j}\frac{y\cdot n}{x}[gcd(i,j)=1] 数组

证实7:
x = i j , x = p 1 e 1 p 2 e 2 p n e k x ( e 1 + 1 ) ( e 2 + 1 ) ( e k + 1 ) p p i a j b p a + b + 1 a + b + 1 = x = 0 a y = 0 b [ g c d ( p x , p y ) = 1 ] a = 2 , b = 3 ( 1 1 1 1 1 p p p 1 p p 2 p 2 ) p i = p 1 e 1 p 2 e 2 p 3 e 3 . . . p k e k j = p 1 q 1 p 2 q 2 p 3 q 3 . . . p k q k σ 0 ( i j ) = x 1 = 0 e 1 y 1 = 0 q 1 [ ( p 1 x 1 , p 1 y 1 ) = 1 ] x 2 = 0 e 2 y 2 = 0 q 2 [ ( p 2 x 2 , p 2 y 2 ) = 1 ] . . . x n = 0 e n y n = 0 q n [ ( p n x n , p n y n ) = 1 ] σ 0 ( i j ) = x i y j [ g c d ( x , y ) = 1 ] p x , y g c d ( x , y ) = 1 令x=i\cdot j,则由惟一分解定理得:x=p_1^{e_1}p_2^{e_2}\dots p_n^{e_k},则x的约数个数为(e_1+1)\cdot(e_2+1)\dots(e_k+1)\\ 考虑任意一个质数p对答案的贡献。假设质数p在i的质因数中出现了a次\\在j的质因数中出现了b次, 那么p对答案\\的贡献就为a+b+1。而a+b+1=\sum_{x=0}^a\sum_{y=0}^b[gcd(p^x,p^y)=1],等效与如下矩阵:a=2,b=3\\ \left(\begin{matrix} 1&1&1&1\\ 1&p&p&p\\ 1&p&p^2&p^2 \end{matrix}\right)\\ 至关于对于素数p来讲,不一样时出现于两个数的质因数中。 \\ 由惟一分解定理又得:i=p_1^{e_1}p_2^{e_2}p_3^{e_3}...p_k^{e_k},j=p_1^{q_1}p_2^{q_2}p_3^{q_3}...p_k^{q_k},根据乘法原理可得:\\ \sigma_0(i\cdot j)=\sum_{x_1=0}^{e_1}\sum_{y_1=0}^{q_1}[(p_1^{x_1},p_1^{y_1})=1]\sum_{x_2=0}^{e_2}\sum_{y_2=0}^{q_2}[(p_2^{x_2},p_2^{y_2})=1]...\sum_{x_n=0}^{e_n}\sum_{y_n=0}^{q_n}[(p_n^{x_n},p_n^{y_n})=1]\\将其合并得:\sigma_0(i\cdot j)=\sum_{x|i}\sum_{y|j}[gcd(x,y)=1]\\ 对于任意一个素数p来讲,它们不一样时出现于x,y中,就至关于gcd(x,y)=1。 app

[摘自]: < https://blog.csdn.net/ab_ever/article/details/76737617 >ide

σ 1 ( n m ) = a n m a = k = 1 r c n m P k x k + y k a P k x k + y k a c = a 1 P 1 x 1 + y 1 a 2 P 2 x 2 + y 2 . . . a r P r x r + y r ( i = 1 r a i ) p k : a P k x k + y k a = a P k x k b P k y k [ g c d ( a , b ) = 1 ] P k x k b a σ 1 ( n m ) = a n b m n b a [ g c d ( a , b ) = 1 ] \sigma_1(n\cdot m)=\sum_{a|n\cdot m}a\\=\sum_{k=1}^r\sum_{c\big|\frac{nm}{P_k^{x_k+y_k}}}\sum_{a|P_k^{x_k+y_k}}ac\\=\sum_{a_1\big|P_1^{x_1+y_1}}\sum_{a_2\big|P_2^{x_2+y_2}}...\sum_{a_r\big|P_r^{x_r+y_r}}\Big(\prod_{i=1}^ra_i\Big) \\对于某个素数p_k: \sum_{a\big | P_k^{x_k+y_k}}a=\sum_{a|P_{k}^{x_k}}\sum_{b|P_{k}^{y_k}}[ gcd(a,b)=1]\frac{P_{k}^{x_k}b}{a}\\因此:\sigma_1(n\cdot m)=\sum_{a|n}\sum_{b|m}\frac{n\cdot b}{a}[gcd(a,b)=1] svg

二、
10
1 1 1 1 1 1 1 1 1 1
1 0 1 0 1 0 1 0 1 0
1 1 0 1 1 0 1 1 0 1
1 0 1 0 1 0 1 0 1 0
1 1 1 1 0 1 1 1 1 0
1 0 0 0 1 0 1 0 0 0
1 1 1 1 1 1 0 1 1 1
1 0 1 0 1 0 1 0 1 0
1 1 0 1 1 0 1 1 0 1
1 0 1 0 0 0 1 0 1 0

四、
1											1
1 2 4										1 1 2
1 3 9 										1 1 3
1 2 4 8 16									1 1 2 1 2
1 5 25										1 1 5
1 2 3 4 6 9 12 18 36						1 1 2 1 3 1 2 3 6
1 7 49										1 1 7
1 2 4 8 16 32 64							1 1 2 1 2 1 2
1 3 9 27 81									1 1 3 1 3
1 2 4 5 10 20 25 50 100						1 1 2 1 5 1 2 5 10	
48											48

【前置技能】

【积性函数的定义】

  1. f ( n ) f(n) 的定义域为正整数域,值域为复数,即 f : Z + C f:Z^+→C ,则称 f ( n ) f(n) 数论函数
  2. f ( n ) f(n) 为数论函数,且 f ( 1 ) = 1 f(1)=1 ,对于互质的正整数 p , q p,q f ( p q ) = f ( p ) f ( q ) f(p⋅q)=f(p)⋅f(q) ,则称其为积性函数
  3. f ( n ) f(n) 为积性函数,且对于任意正整数 p , q p,q 都有 f ( p q ) = f ( p ) f ( q ) f(p⋅q)=f(p)⋅f(q) ,则称其为彻底积性函数

【积性函数的性质与例子】

  1. f ( n ) f(n) 为积性函数,则对于正整数 n = i = 1 t p i e i n=\prod_{i=1}^tp_i^{e_i} f ( n ) = i = 1 t f ( p i e i ) f(n)=\prod_{i=1}^tf(p_i^{e_i}) ;若f(n)为彻底积性函数,则对于正整数 n = i = 1 t p i e i n=\prod_{i=1}^tp_i^{e_i} f ( n ) = i = 1 t f ( p i ) e i f(n)=\prod_{i=1}^tf(p_i)^{e_i}
  2. 常见的积性函数有:
    1. 除数函数 σ k ( n ) = d n d k \sigma_k(n)=\sum_{d|n}d^k ,表示n的约数的k次幂和,注意 σ k ( n ) \sigma_k(n) σ k ( n ) \sigma^k(n) 是不一样的。
      • 由惟一分解定理得: n = i = 1 t p i e i n=\prod_{i=1}^tp_i^{e_i} 。则 σ k ( n ) = i = 1 t σ k ( p i e i ) = i = 1 t d p i e i d k = i = 1 t ( 1 + p k + p 2 k + p 3 k + + p e i k ) \sigma_k(n)=\prod_{i=1}^t\sigma_k(p_i^{e_i})=\prod_{i=1}^t \sum_{d|p_i^{e_i}}d^k=\prod_{i=1}^t(1+p^k+p^{2k}+p^{3k}+\dots+p^{e_ik})
    2. 约数个数函数 τ ( n ) = σ 0 ( n ) = d n 1 τ(n)=σ_0(n)=∑_{d|n}1 ,表示 n n 的约数个数,通常也写为 d ( n ) d(n)
      • σ 0 ( n ) = i = 1 t σ 0 ( p i e i ) = i = 1 t ( 1 + p 0 + p 0 + p 0 + + p 0 ) = i = 1 t e i + 1 \sigma_0(n)=\prod_{i=1}^t\sigma_0(p_i^{e_i})=\prod_{i=1}^t(1+p^0+p^0+p^0+\dots+p^{0})=\prod_{i=1}^te_i+1
    3. 约数和函数 σ ( n ) = σ 1 ( n ) = d n d σ(n)=σ_1(n)=∑_{d|n}d ,表示 n n 的约数之和。
      • σ 1 ( n ) = i = 1 t ( 1 + p 1 + p 2 + p 3 + + p e i ) \sigma_1(n)=\prod_{i=1}^t(1+p^1+p^2+p^3+\dots+p^{e_i}) p s : ps: 括号内的能够用等比数列求和公式简化。
    4. 欧拉函数 φ ( n ) = i = 1 n [ ( n , i ) = 1 ] 1 \varphi(n)=\sum_{i=1}^n[(n,i)=1]\cdot1 ,表示不大于 n n 且与 n n 互质的正整数的个数,另外 i = 1 n [ ( n , i ) = 1 ] i = n φ ( n ) + [ n = 1 ] 2 \sum_{i=1}^n[(n,i)=1]\cdot i=\frac{n\cdot \varphi(n)+[n=1]}2 ,且对于正整数 n &gt; 2 n&gt;2 来讲 φ ( n ) \varphi(n) 是偶数。
      • n 1 2 i = 1 n [ ( n , i ) = 1 ] i = i = 1 n [ ( n , i ) = 1 ] i + i = 1 n [ ( n , i ) = 1 ] ( n i ) = i = 1 n [ ( n , i ) = 1 ] n = n i = 1 n [ ( n , i ) = 1 ] = n φ ( n ) , i = 1 n [ ( n , i ) = 1 ] i = n φ ( n ) 2 n\ne1时,2\sum_{i=1}^n[(n,i)=1]\cdot i=\sum_{i=1}^n[(n,i)=1]\cdot i+\sum_{i=1}^n[(n,i)=1]\cdot(n-i)=\\ \sum_{i=1}^n[(n,i)=1]\cdot n=n\sum_{i=1}^n[(n,i)=1]=n\cdot\varphi(n),则\sum_{i=1}^n[(n,i)=1]\cdot i=\frac{n\cdot \varphi(n)}{2}
    5. 莫比乌斯函数 μ ( n ) μ(n) ,在狄利克雷卷积的乘法中与恒等函数互为逆元, μ ( 1 ) = 1 μ(1)=1 ,对于无平方因子数 n = i = 1 t p i n=∏^t_{i=1}p_i μ ( n ) = ( 1 ) t μ(n)=(−1)^t ,对于有平方因子数 n n μ ( n ) = 0 μ(n)=0
    6. 元函数 e ( n ) = [ n = 1 ] e(n)=[n=1] ,狄利克雷卷积的乘法单位元,彻底积性。
    7. 恒等函数 I ( n ) = 1 I(n)=1 ,彻底积性。
    8. 单位函数 i d ( n ) = n id(n)=n ,彻底积性。
    9. 幂函数 i d k ( n ) = n k id^k(n)=n^k ,彻底积性。
  3. 关于莫比乌斯函数和欧拉函数有两个经典的公式
    • [ n = 1 ] = d n μ ( d ) [n=1]=∑_{d|n}μ(d) ,将 μ ( d ) μ(d) 看做是容斥的系数便可证实。
    • n = d n φ ( d ) n=∑_{d|n}φ(d) ,将 i n ( 1 i n ) \frac in(1≤i≤n) 化为最简分数统计个数便可证实。

【狄利克雷卷积与莫比乌斯反演】

  1. 数论函数 f f g g 狄利克雷卷积定义为 ( f g ) ( n ) = d n f ( d ) g ( n d ) (f∗g)(n)=∑_{d|n}f(d)⋅g(\frac nd) ,狄利克雷卷积知足交换律 ( ( f g ) ( n ) = ( g f ) ( n ) = d n g ( d ) f ( n d ) ) ((f*g)(n)=(g*f)(n)=\sum_{d|n}g(d)f(\frac nd)) 、结合律 ( f g h = f ( g h ) ) (f*g*h=f*(g*h)) ,对加法知足分配律,存在单位元函数 e ( n ) = [ n = 1 ] e(n)=[n=1] 使得 f e = f = e f f∗e=f=e∗f ,若 f f g g 为积性函数则 f g f∗g 也为积性函数。
  2. 狄利克雷卷积的一个经常使用技巧是对于积性函数 f f 与恒等函数 I I 的卷积的处理,例如 n = i = 1 t p i e i , ( f I ) ( n ) = d n f ( d ) I ( n d ) = d n f ( d ) = i = 1 t j = 0 e i f ( p i j ) n=\prod_{i=1}^tp_i^{e_i},(f*I)(n)=\sum_{d|n}f(d)I(\frac nd)=\sum_{d|n}f(d)=\prod_{i=1}^t\sum_{j=0}^{e_i}f(p_i^j)
  3. 莫比乌斯反演也是对于 g ( n ) = d n f ( d ) ( g = f I ) g(n)=∑_{d|n}f(d)(g=f*I) 的讨论,可是不要求 f f 是积性函数,适用于已知 g ( n ) g(n) f ( n ) f(n) 的状况,因为 ( I μ ) ( n ) = d n μ ( d ) = e ( n ) (I*\mu)(n)=\sum_{d|n}\mu(d)=e(n) ,则 g μ = ( f I ) μ = f ( I μ ) = f e = f g*\mu=(f*I)*\mu=f*(I*\mu)=f*e=f ,即若 g = f I g=f*I ,则 f ( n ) = ( g μ ) ( n ) = d n g ( d ) μ ( n d ) f(n)=(g*\mu)(n)=\sum_{d|n}g(d)\cdot\mu(\frac nd) ,相似的有 g ( n ) = n d f ( d ) f ( n ) = n d g ( d ) μ ( d n ) g(n)=\sum_{n|d}f(d)\Rightarrow f(n)=\sum_{n|d}g(d)\cdot\mu(\frac dn) ,二项式反演也是相似的技巧。有一个例子能够看出欧拉函数和莫比乌斯函数之间的关系,因为 d n φ ( d ) = i d ( n ) \sum_{d|n}\varphi(d)=id(n) ,因此 φ ( n ) = d n μ ( d ) n d \varphi(n)=\sum_{d|n}\mu(d)\cdot\frac nd ,即 φ ( n ) n = d n μ ( d ) d \frac{\varphi(n)}n=\sum_{d|n}\frac{\mu(d)}d

【正文:黑科技】

这种黑科技在低于线性时间的复杂度下解决一类积性函数的前缀和问题。函数

首先看一个简单的例子,求前 n n 个正整数的约数之和,即 i = 1 n σ ( i ) ∑^n_{i=1}σ(i) ,其中 n 1 0 12 n≤10^{12} 。显然不能直接作了,可是咱们能够推导一番:
1 i = 1 n σ ( i ) = i = 1 n d i d = d = 1 n d i = 1 n d = i = 1 n i n i 2 i = 1 n σ ( i ) = i = 1 n d i d = i = 1 n d = 1 n i d = i = 1 n n i ( n i + 1 ) 2 方法1:\sum_{i=1}^n\sigma(i)=\sum_{i=1}^n\sum_{d|i}d=\sum_{d=1}^nd\sum_{i=1}^\frac nd=\sum_{i=1}^ni\cdot\lfloor\frac ni\rfloor\\ 方法2:\sum_{i=1}^n\sigma(i)=\sum_{i=1}^n\sum_{d|i}d=\sum_{i=1}^n\sum_{d=1}^{\frac ni}d=\sum_{i=1}^n\frac{\lfloor\frac ni\rfloor\cdot (\lfloor\frac ni\rfloor+1)}{2}
i n i\le \sqrt{n} 时, n i \lfloor\frac ni \rfloor 显然只有 O ( n ) O(\sqrt{n}) 个取值;当 i n i\ge\sqrt{n} 一样;对于固定的 n i \lfloor\frac ni\rfloor i i 的取值是一段连续的区间,这段区间是 [ n n i + 1 + 1 , n n i ] [\bigg\lfloor\frac{n}{\lfloor\frac ni \rfloor+1}\bigg\rfloor+1,\bigg\lfloor\frac{n}{\lfloor\frac ni \rfloor}\bigg\rfloor ] ,所以能够 O ( n ) O(\sqrt{n}) 求得。优化

n = 10 n=10 时, i = 1 n σ ( i ) = 1 × 10 + 2 × 5 + 3 × 3 + 4 × 2 + 5 × 2 + 6 × 1 + 7 × 1 + 8 × 1 + 9 × 1 + 10 × 1 \sum_{i=1}^n\sigma(i)=1\times10+2\times5+3\times3+4\times2+5\times2+6\times1+7\times1+8\times1+9\times1+10\times1 ,
i = 1 n σ ( i ) = 10 × 1 + 5 × 2 + 3 × 3 + 2 × ( 4 + 5 ) + 1 × ( 6 + 7 + 8 + 9 + 10 ) \sum_{i=1}^n\sigma(i)=10\times1+5\times2+3\times3+2\times(4+5)+1\times(6+7+8+9+10)


求前n个正整数的约数个数之和也相似:
i = 1 n σ 0 ( i ) = i = 1 n d n 1 = d = 1 n i = 1 n d 1 = d = 1 n n d \sum_{i=1}^n\sigma_0(i)=\sum_{i=1}^n\sum_{d|n}1=\sum_{d=1}^n\sum_{i=1}^\frac nd1=\sum_{d=1}^n\lfloor\frac nd\rfloor


如今咱们来加大一点难度,(51Nod 1239)求前 n n 个正整数的欧拉函数之和,即 Φ ( n ) = i = 1 n φ ( i ) \Phi(n)=∑^n_{i=1}φ(i) ,其中 n 1 0 11 n≤10^{11}

对于 φ ( i ) \varphi(i) ,咱们知道 d n φ ( d ) = n \sum_{d|n}\varphi(d)=n ,即 ( φ I ) ( n ) = d n φ ( d ) I ( n d ) = d n φ ( d ) = n (\varphi*I)(n)=\sum_{d|n}\varphi(d)I(\frac nd)=\sum_{d|n}\varphi(d)=n ,则
n ( n + 1 ) 2 = i = 1 n i = i = 1 n ( φ I ) ( i ) = i = 1 n d n σ ( d ) = i = 1 n d = 1 n i σ ( d ) = i = 1 n Φ ( n i ) \frac{n\cdot(n+1)}{2}=\sum_{i=1}^ni=\sum_{i=1}^n(\varphi*I)(i)=\sum_{i=1}^n\sum_{d|n}\sigma(d)=\sum_{i=1}^n\sum_{d=1}^{\frac ni}\sigma(d)=\sum_{i=1}^n\Phi(\lfloor\frac ni\rfloor)

对于 i = 1 n Φ ( n i ) \sum_{i=1}^n\Phi(\lfloor\frac ni\rfloor) ,若是 n = 1 n=1 则便是咱们要求的 Φ ( n ) \Phi(n)
Φ ( n ) = i = 1 n Φ ( n i ) i = 2 n Φ ( n i ) = n ( n + 1 ) 2 i = 2 n Φ ( n i ) 则\Phi(n)=\sum_{i=1}^n\Phi(\lfloor\frac ni\rfloor)-\sum_{i=2}^n\Phi(\lfloor\frac ni\rfloor)=\frac{n\cdot (n+1)}2-\sum_{i=2}^n\Phi(\lfloor \frac ni\rfloor)
因为 Φ ( n ) \Phi(n) 是一个积性函数的前缀和,因此筛法也能够预处理一部分。因此总复杂度为 O ( n 2 3 ) O(n^{\frac 23})


若是能经过狄利克雷卷积构造一个更好计算前缀和的函数,且用于卷积的另外一个函数也易计算,则能够简化计算过程。例如上题就是利用了 φ I = i d φ∗I=id 的性质,但必定注意,不是全部的这一类题都只用配个恒等函数 I I
就能够轻松完事的,有时须要更细致的观察。


(51Nod 1244)定义梅滕斯函数 M ( n ) = i = 1 n μ ( i ) M(n)=∑^n_{i=1}μ(i) 给定正整数 n n 计算 M ( n ) M(n) ,其中 n 1 0 11 n≤10^{11} 。能够利用 μ I = e \mu*I=e 的性质简化。

对于 μ ( i ) \mu(i) ,有 d n μ ( d ) = [ n = 1 ] \sum_{d|n}\mu(d)=[n=1] ,则 ( μ I ) ( n ) = d n μ ( d ) I ( n d ) = [ n = 1 ] (\mu*I)(n)=\sum_{d|n}\mu(d)I(\frac nd)=[n=1] ,则
1 = i = 1 n [ i = 1 ] = i = 1 n ( μ I ) ( i ) = i = 1 n d n μ ( d ) = i = 1 n d = 1 n i μ ( d ) = i = 1 n M ( n i ) M ( n ) = i = 1 n M ( n i ) i = 2 n M ( n i ) = 1 i = 2 n M ( n i ) 1=\sum_{i=1}^n[i=1]=\sum_{i=1}^n(\mu*I)(i)=\sum_{i=1}^n\sum_{d|n}\mu(d)=\sum_{i=1}^n\sum_{d=1}^{\frac ni}\mu(d)=\sum_{i=1}^nM(\lfloor\frac ni \rfloor)\\ 同理得: M(n)=\sum_{i=1}^nM(\lfloor\frac ni \rfloor)-\sum_{i=2}^nM(\lfloor \frac ni\rfloor)=1-\sum_{i=2}^nM(\lfloor\frac ni \rfloor)
同理复杂度为 O ( n 2 3 ) O(n^{\frac 23})


(51Nod 1237)定义最大公约数之和的函数 G ( n ) = i = 1 n j = 1 n g c d ( i , j ) G(n)=\sum_{i=1}^n\sum_{j=1}^ngcd(i,j) ,给定正整数n,计算 G ( n ) G(n) ,其中 n 1 0 10 n\le10^{10}
1 G ( n ) = i = 1 n j = 1 n g c d ( i , j ) = i = 1 n j = 1 n d = 1 n [ g c d ( i , j ) = d ] d = d = 1 n i = 1 n d j = 1 n d [ g c d ( i , j ) = 1 ] d [ g c d ( i , j ) = 1 ] = k g c d ( i , j ) μ ( k ) G ( n ) = d = 1 n i = 1 n d j = 1 n d k g c d ( i , j ) μ ( k ) d = k = 1 n μ ( k ) d = 1 n d i = 1 n k d j = 1 n k d 1 = k = 1 n μ ( k ) d = 1 n d n k d 2 T = n k , T = 1 n n T 2 d T d μ ( T d ) n = i d ( n ) = d n φ ( d ) , φ ( n ) = d n i d ( d ) μ ( n d ) = d n d μ ( n d ) T = 1 n n T 2 φ ( T ) 方法1:G(n)=\sum_{i=1}^n\sum_{j=1}^ngcd(i,j)=\sum_{i=1}^n\sum_{j=1}^n\sum_{d=1}^n[gcd(i,j)=d]\cdot d=\sum_{d=1}^n\sum_{i=1}^{\frac nd}\sum_{j=1}^{\frac nd}[gcd(i,j)=1]\cdot d\\ 由于[gcd(i,j)=1]=\sum_{k|gcd(i,j)}\mu(k) \\ 则G(n)=\sum_{d=1}^n\sum_{i=1}^{\frac nd}\sum_{j=1}^{\frac nd}\sum_{k|gcd(i,j)}\mu(k)\cdot d=\sum_{k=1}^n\mu(k)\sum_{d=1}^{n}d\sum_{i=1}^{\frac n{kd}}\sum_{j=1}^{\frac n{kd}}1=\sum_{k=1}^n\mu(k)\sum_{d=1}^{ n}d\cdot\lfloor\frac n{kd}\rfloor^2\\ 令T=nk, 则得\sum_{T=1}^n\lfloor\frac n{T}\rfloor ^2\sum_{d|T}d\cdot\mu(\frac Td)\\ 再由n=id(n)=\sum_{d|n}\varphi(d), 则由莫比乌斯反演得\varphi(n)=\sum_{d|n}id(d)\cdot\mu(\frac nd)=\sum_{d|n}d\cdot\mu(\frac nd)\\ 则得\sum_{T=1}^n\lfloor\frac{n}{T}\rfloor^2\varphi(T),剩下就是求欧拉函数前缀和了。


2 G ( n ) = i = 1 n j = 1 n g c d ( i , j ) = i = 1 n j = 1 n d = 1 n [ g c d ( i , j ) = d ] d = d = 1 n i = 1 n d j = 1 n d [ g c d ( i , j ) = 1 ] d d = 1 n d i = 1 n d j = 1 n d [ g c d ( i , j ) = 1 ] = d = 1 n d ( ( 2 i = 1 n d φ ( i ) ) 1 ) i = 1 n j = 1 n [ g c d ( i , j ) = 1 ] = 2 i = 1 n j = 1 i [ g c d ( i , j ) = 1 ] i = 1 n [ g c d ( i , i ) = 1 ] = ( 2 i = 1 n φ ( i ) ) 1 方法2:G(n)=\sum_{i=1}^n\sum_{j=1}^ngcd(i,j)=\sum_{i=1}^n\sum_{j=1}^n\sum_{d=1}^n[gcd(i,j)=d]\cdot d=\sum_{d=1}^n\sum_{i=1}^{\frac nd}\sum_{j=1}^{\frac nd}[gcd(i,j)=1]\cdot d\\ \sum_{d=1}^nd\sum_{i=1}^{\frac nd}\sum_{j=1}^{\frac nd}[gcd(i,j)=1]=\sum_{d=1}^nd\bigg(\big(2\sum_{i=1}^{\frac nd}\varphi(i)\big)-1\bigg),则剩下就是求欧拉函数前缀和了。\\ 对于\sum_{i=1}^n\sum_{j=1}^n[gcd(i,j)=1]=2\sum_{i=1}^n\sum_{j=1}^i[gcd(i,j)=1]-\sum_{i=1}^n[gcd(i,i)=1]=\big(2\sum_{i=1}^n\varphi(i)\big)-1


(51Nod 1238)定义最小公倍数之和的函数 L ( n ) = i = 1 n j = 1 n l c m ( i , j ) L(n)=\sum_{i=1}^n\sum_{j=1}^nlcm(i,j) 给定正整数n计算 L ( n ) L(n) ,其中 n 1 0 10 n\le10^{10}
1 L ( n ) = i = 1 n j = 1 n l c m ( i , j ) = i = 1 n j = 1 n i j g c d ( i , j ) = i = 1 n j = 1 n d = 1 n [ g c d ( i , j ) = d ] i j d = d = 1 n i = 1 n d j = 1 n d [ g c d ( i , j ) = 1 ] i j d = d = 1 n i = 1 n d j = 1 n d k g c d ( i , j ) μ ( k ) i j d = d = 1 n k = 1 n d i = 1 n d k j = 1 n d k i j d μ ( k ) k 2 = d = 1 n d k = 1 n d μ ( k ) k 2 i = 1 n d k i j = 1 n d k j = d = 1 n d k = 1 n d μ ( k ) k 2 ( n d k + 1 ) 2 n d k 2 4 μ ( k ) k 2 O ( n ) 方法1:L(n)=\sum_{i=1}^n\sum_{j=1}^nlcm(i,j)=\sum_{i=1}^n\sum_{j=1}^n\frac{i\cdot j}{gcd(i,j)}=\sum_{i=1}^n\sum_{j=1}^n\sum_{d=1}^n[gcd(i,j)=d]\frac{i\cdot j}{d}\\ =\sum_{d=1}^n\sum_{i=1}^{\frac nd}\sum_{j=1}^{\frac nd}[gcd(i,j)=1]i\cdot j\cdot d=\sum_{d=1}^n\sum_{i=1}^{\frac nd}\sum_{j=1}^{\frac nd}\sum_{k|gcd(i,j)}\mu(k)\cdot i\cdot j\cdot d=\sum_{d=1}^n\sum_{k=1}^{\frac nd}\sum_{i=1}^{\frac {n}{dk}}\sum_{j=1}^{\frac{n}{dk}}i\cdot j\cdot d\cdot\mu(k)\cdot k^2\\ =\sum_{d=1}^nd\sum_{k=1}^{\frac nd}\mu(k)\cdot k^2\sum_{i=1}^{\frac {n}{dk}}i\sum_{j=1}^{\frac{n}{dk}}j=\sum_{d=1}^nd\sum_{k=1}^{\frac nd}\mu(k)\cdot k^2\cdot\frac{(\lfloor\frac n{dk}\rfloor+1)^2\cdot \lfloor\frac n{dk}\rfloor^2}{4}\\ 而后就是求\mu(k)\cdot k^2的前缀和,可是这个方法时间复杂度太高好像为O(n),此题不可行。后面有一道题要用此方法。


2 L ( n ) = i = 1 n j = 1 n l c m ( i , j ) = i = 1 n j = 1 n i j g c d ( i , j ) = i = 1 n j = 1 n d = 1 n [ g c d ( i , j ) = d ] i j d = d = 1 n d i = 1 n d j = 1 n d [ g c d ( i , j ) = 1 ] i j = d = 1 n d i = 1 n d i j = 1 n d [ g c d ( i , j ) = 1 ] j i = 1 n i j = 1 n [ g c d ( i , j ) = 1 ] j = 2 i = 1 n i j = 1 i [ g c d ( i , j ) = 1 ] j i = 1 n [ g c d ( i , i ) = 1 ] i = ( 2 i = 1 n i i φ ( i ) + [ i = 1 ] 2 ) 1 = ( i = 1 n i 2 φ ( i ) + [ i = 1 ] ) 1 d = 1 n d ( ( i = 1 n d i 2 φ ( i ) + [ i = 1 ] ) 1 ) = d = 1 n d i = 1 n d i 2 φ ( i ) ϕ ( n ) = i = 1 n i 2 φ ( i ) f ( n ) = n 2 φ ( n ) d n f ( i d ) 2 ( n ) = d n d 2 φ ( d ) ( n d ) 2 = n 2 d n φ ( d ) = n 3 n 2 ( n + 1 ) 2 4 = i = 1 n i 3 = i = 1 n ( f i d 2 ) ( i ) = i = 1 n d i d 2 φ ( d ) ( i d ) 2 = i = 1 n i 2 d = 1 n i d 2 φ ( d ) = i = 1 n i 2 ϕ ( n i ) ϕ ( n ) = i = 1 n i 2 ϕ ( n i ) i = 2 n i 2 ϕ ( n i ) = n 2 ( n + 1 ) 2 4 i = 1 n i 2 ϕ ( n i ) L ( n ) = d = 1 n d ϕ ( n d ) 方法2:L(n)=\sum_{i=1}^n\sum_{j=1}^nlcm(i,j)=\sum_{i=1}^n\sum_{j=1}^n\frac{i\cdot j}{gcd(i,j)}=\sum_{i=1}^n\sum_{j=1}^n\sum_{d=1}^n[gcd(i,j)=d]\frac{i\cdot j}{d}\\ =\sum_{d=1}^nd\sum_{i=1}^{\frac nd}\sum_{j=1}^{\frac nd}[gcd(i,j)=1]i\cdot j=\sum_{d=1}^nd\sum_{i=1}^{\frac nd}i\sum_{j=1}^{\frac nd}[gcd(i,j)=1]j\\ 由于\sum_{i=1}^{n}i\sum_{j=1}^{n}[gcd(i,j)=1]\cdot j=2\sum_{i=1}^{n}i\sum_{j=1}^i[gcd(i,j)=1]\cdot j-\sum_{i=1}^n[gcd(i,i)=1]\cdot i\\ =\bigg(2\sum_{i=1}^ni\frac{i\cdot\varphi(i)+[i=1]}{2}\bigg)-1=\bigg(\sum_{i=1}^ni^2\cdot\varphi(i)+[i=1]\bigg)-1\\ 则得\sum_{d=1}^nd\bigg(\big(\sum_{i=1}^{\frac nd}i^2\cdot\varphi(i)+[i=1]\big)-1\bigg)=\sum_{d=1}^nd\sum_{i=1}^{\frac nd}i^2\cdot\varphi(i),而后就是求\phi(n)=\sum_{i=1}^ni^2\cdot \varphi(i)。\\ 令f(n)=n^2\cdot \varphi(n),则\sum_{d|n}f*(id)^2(n)=\sum_{d|n}d^2\cdot\varphi(d)\cdot(\frac nd)^2=n^2\sum_{d|n}\varphi(d)=n^3\\ 则\frac {n^2\cdot(n+1)^2}4=\sum_{i=1}^ni^3=\sum_{i=1}^n(f*id^2)(i)=\sum_{i=1}^n\sum_{d|i}d^2\cdot\varphi(d)\cdot(\frac id)^2=\sum_{i=1}^ni^2\sum_{d=1}^{\frac ni}d^2\cdot\varphi(d)\\=\sum_{i=1}^ni^2\cdot\phi(\frac ni),则\phi(n)=\sum_{i=1}^ni^2\cdot \phi(\frac ni)-\sum_{i=2}^ni^2\cdot \phi(\frac ni)=\frac{n^2\cdot(n+1)^2}{4}-\sum_{i=1}^ni^2\cdot\phi(\frac ni)\\ 最终得L(n)=\sum_{d=1}^nd\cdot\phi(\frac nd)

(Tsinsen A1231)定义最小公倍数之和的函数 L ( n , m ) = i = 1 n j = 1 m l c m ( i , j ) L(n,m)=\sum_{i=1}^n\sum_{j=1}^m lcm(i,j) 给定正整数n,m,计算 L ( n , m ) L(n,m) ,其中 n , m 1 0 7 n,m\le10^{7}
L ( n ) = i = 1 n j = 1 m l c m ( i , j ) = i = 1 n j = 1 m i j g c d ( i , j ) = i = 1 n j = 1 m d = 1 n [ g c d ( i , j ) = d ] i j d = d = 1 n i = 1 n d j = 1 m d [ g c d ( i , j ) = 1 ] i j d = d = 1 n i = 1 n d j = 1 m d k g c d ( i , j ) μ ( k ) i j d = d = 1 n k = 1 n d i = 1 n d k j = 1 m d k i j d μ ( k ) k 2 = d = 1 n d k = 1 n d μ ( k ) k 2 i = 1 n d k i j = 1 m d k j = d = 1 n d k = 1 n d μ <

相关文章
相关标签/搜索