1. 程式人生 > 實用技巧 >積性函式

積性函式

目錄


積性函式

定義

\(\gcd(x,y) = 1\)\(f(xy)=f(x)f(y)\),則 \(f(n)\) 為積性函式。

性質

\(f(x)\)\(g(x)\)均為積性函式,則以下函式也為積性函式:

\[\begin{aligned} & h(x) = f(x^p)\\ & h(x) = f^p(x)\\ & h(x) = f(x)g(x)\\ & h(x) = \sum_{d\mid x} f(d)g(\dfrac{x}{d}) \end{aligned}\]

常見積性函式

  • 單位函式 \(e(n) = [n = 1]\)
  • 冪函式 \(\operatorname{Id}_{k}(n) = n^k\)\(\operatorname{id}_1(n)\) 通常簡記為\(\operatorname{id}(n)\)
  • 常數函式 \(1(n) = 1\)
  • 因數個數 \(\operatorname{d}(n) = \sum\limits_{d\mid n} 1\)
  • 除數函式 \(\sigma_{k}(n) = \sum\limits_{d\mid n} d^k\)
    \(k=1\) 時為因數和函式,通常簡記為 \(\sigma(n)\)
    \(k=0\)
    時為因數個數函式 \(\sigma_{0}(n)\)
  • 尤拉函式 \(\varphi(n) = \sum\limits_{i=1}^{n} [\gcd(i,n) = 1]\)
  • 莫比烏斯函式 \(\mu(n) = \begin{cases}1 &n=1\\0 &n\ \text{含有平方因子}\\(-1)^k &k\text{為}\ n\ \text{的本質不同質因子個數} \end{cases}\)

不是很懂上面寫的什麼玩意?
不用深究,有個印象繼續往下看就好。


莫比烏斯函式

定義

\(\mu\) 為莫比烏斯函式,定義為

\[\mu(n) = \begin{cases} 1 &n=1\\0 &n\ \text{含有平方因子}\\(-1)^k &k\text{為}\ n\ \text{的本質不同質因子個數} \end{cases}\]

解釋

\(n = \prod\limits_{i=1}^{k} p_{i}^{c_i}\),其中\(p_i\)為質因子,\(c_i\ge 1\)

  1. \(n=1\)時,\(\mu (n) = 1\)
  2. \(n\not ={1}\)時 ,
    • \(\exist i\in [1,k], c_i > 1\) 時,\(\mu (n) = 0\)
      當某質因子出現次數大於\(1\)時,\(\mu (n) = 0\)
    • \(\forall i\in [1,k], c_i = 1\) 時,\(\mu (n) = (-1)^k\)
      當每個質因子只出現一次時,即\(n = \prod\limits_{i=1}^{k}p_i\)\(\{p_i\}\)中元素唯一。
      \(\mu (n) = (-1)^k\),此處\(k\)為質因子的種類數。

性質

莫比烏斯函式是積性函式,且具有以下性質

\[\large \sum_{d\mid n} \mu (d) = [n=1] \]

證明,設 \(n = \prod\limits_{i=1}^{k}{p_i^{c_i}}, n' = \prod\limits_{i=1}^{k}{p_i}\)

  • 根據莫比烏斯函式定義,則有:\(\sum\limits_{d\mid n}{\mu(d)} = \sum\limits_{d\mid n'}{\mu(d)}\)
  • \(n'\) 的某因子 \(d\),有 \(\mu (d) = (-1)^i\),則它由 \(i\) 個 本質不同的質因子組成。
    由於質因子總數為 \(k\),滿足上式的因子數為 \(C_{k}^{i}\)
  • 對於原求和式,轉為列舉 \(\mu(d)\) 的值。
    \(\sum\limits_{d\mid n'}{\mu(d)} = \sum\limits_{i=0}^{k}{C_{k}^{i} \times (-1)^i} = \sum\limits_{i=0}^{k}{C_{k}^{i} \times (-1)^i\times 1^{k-i}}\)
    根據二項式定理,上式 \(= (1+(-1))^k\)
    易知該式在 \(k=0\),即 \(n=0\) 時為 \(1\),否則為 \(0\)

補充結論

反演結論:

\[[\gcd(i,j) = 1] \iff \sum\limits_{d\mid \gcd(i,j)} {\mu (d)} \]

證明 1:
\(n = \gcd(i,j)\),則右\(= \sum\limits_{d\mid n} {\mu (d)} = [n = 1] = [\gcd(i,j) = 1]=\) 左。

證明 2:
暴力展開:\([\gcd(i,j) = 1] = e(\gcd(i,j)) = \sum\limits_{d\mid \gcd(i,j)}\mu(d)\)

線性篩求莫比烏斯函式

\(\mu\) 為積性函式,因此可以線性篩莫比烏斯函式。

int cnt, Mobius[kMaxn], Prime[kMaxn];
bool vis[kMaxn];

void GetMobius() {
  Mobius[1] = 1;
  for (int i = 2; i <= n; i ++) {
    if (!vis[i]) Mobius[i] = - 1, Prime[++ cnt] = i;
    for (int j = 1; j <= cnt && i * Prime[j] <= n; j ++) {
      vis[i * Prime[j]] = true;
      if (i % Prime[j] == 0) break;
      Mobius[i * Prime[j]] = - Mobius[i];
    }
  }
}

狄利克雷(Dirichlet)卷積

建議閱讀 演算法學習筆記(35): 狄利克雷卷積 By: Pecco

定義兩個數論函式 \(f,g\) 的狄利克雷卷積為

\[\large(f\ast g) (n) = \sum_{d\mid n} f(d)g(\dfrac{n}{d}) \]

性質

  1. 顯然滿足 交換律,結合律,分配律。
    • \(f \ast g = g \ast f\)
    • \((f \ast g) \ast h = f\ast (g\ast h)\)
    • \(f\ast (g+h) = f\ast g + f\ast h\)
  2. \(e\) 為狄利克雷卷積的單位元,有\((f\ast e)(n) = f(n)\)
  3. \(f,g\) 為積性函式,則 \(f\ast g\) 為積性函式。

關於單位元 \(e\)

有:

\[e = \mu \ast 1=\sum\limits_{d\mid n} \mu (d) \]

證明

\[\begin{aligned} (f\ast e)(n) = \sum_{d\mid n} f(d)e(\dfrac{n}{d}) = \sum_{d\mid n} f(d)[\dfrac{n}{d} = 1] \end{aligned}\]

  • 對於\([\dfrac{n}{d} = 1]\),當且僅當 \(\dfrac{n}{d}=1\),即 \(d=n\) 時為 \(1\),否則為\(0\)
  • 則當 \(d=n\) 時,\(f(d)[\dfrac{n}{d}=1] = f(n)\)
    \(d\not ={n}\) 時,\(f(d)[\dfrac{n}{d}=1] = 0\)

綜上,\((f\ast e)(n) = \sum\limits_{d\mid n} f(d)[\dfrac{n}{d} = 1] = f(n)\),滿足單位元的性質。
\(e = \mu \ast 1\) 成立。

除數函式與冪函式

冪函式 \(\operatorname{Id}_{k}(n) = n^k\)
除數函式 \(\sigma_{k}(n) = \sum\limits_{d\mid n} d^k\)

顯然有:

\[(\operatorname{Id}_k\ast 1)(n) = \sum_{d\mid n} \operatorname{Id_k(d)} = \sum_{d\mid n} d^k = \sigma_k \]

\(k=0\) 時,\(\operatorname{Id_0}=1\)\(\sigma_0\) 為因數個數函式,有:

\[(1\ast 1)(n) = \sum_{d\mid n}1 = \sigma_0 \]

尤拉函式與恆等函式

\[\begin{aligned} \varphi \ast 1 =& \operatorname{Id}\\ \varphi =& \operatorname{Id}\ast \mu \end{aligned}\]

對於一式,當 \(n=p^m\) 時(\(p\) 為質數),有:

\[(\varphi \ast 1)(p^m) = \sum_{d\mid n}\varphi(d) = \varphi(1) +\sum_{i=1}^{m}\varphi(p^i) = 1 +\sum_{i=1}^{m}(p^i-p^{i-1}) = p^m \]

\(p^i\) 的因子有 \(p^{i-1}\) 個,為 \(1\sim p^{i-1}\),故 \(\varphi(p^i) = p^i-p^{i-1}\)

\((\varphi \ast 1)(n)\) 為積性函式,則對於任意正整數 \(n\),有:

\[(\varphi \ast 1)(n) = (\varphi \ast 1)(\prod p^m) = \prod(\varphi \ast 1)(p^m) = \prod p^m = n \]

得證。

對於 2 式,在 1 式基礎上兩側同時 \(\ast \mu\) 即得。
左側變為 \(\varphi \ast 1\ast \mu = \varphi \ast e = \varphi\)


寫在最後

演算法學習筆記(35): 狄利克雷卷積 By: Pecco

希望人沒事