積性函數前綴和-我的總結

積性函數前綴和-我的總結

【寫在前面】

用了一個多星期將這部分大體弄懂了,東西太多,有不少技巧,本身從新寫了一下,記錄本身的理解。內容與原文基本一致,在其基礎上加上了一些我感受比較重要的但他沒有詳細說明的東西。如下都是我逐字打出來的。若是有什麼錯誤,請指出。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 μ <

相關文章
相關標籤/搜索