日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

莫比乌斯函数

發布時間:2024/3/12 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 莫比乌斯函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

莫比烏斯函數

對于n≥0n \geq 0n0,設數nnn的唯一分解式為P1ρ1P2ρ2...PnρnP_1^{\rho_1}P_2^{\rho_2}...P_n^{\rho_n}P1ρ1??P2ρ2??...Pnρn??

μ(n)={1n=1(?1)sρ1=ρ2=...=ρs=10?ρi≥2\mu(n) = \left\{\begin{array}{rcl} 1 && n=1 \\ (-1)^s && \rho_1=\rho_2=...=\rho_s=1 \\ 0 && \exists \rho_i \geq 2 \end{array}\right.μ(n)=????1(?1)s0??n=1ρ1?=ρ2?=...=ρs?=1?ρi?2?

通俗地講,莫比烏斯函數就是:

  • μ(1)=1\mu(1)=1μ(1)=1

  • nnn存在平方因子,μ(n)=0\mu(n)=0μ(n)=0

  • nnn是奇數個不同素數之積,μ(n)=?1\mu(n)=-1μ(n)=?1

  • nnn是偶數個不同素數之積,μ(n)=1\mu(n)=1μ(n)=1

  • 性質

    • 性質一:莫比烏斯函數是積性函數。若gcd(n,m)=1gcd(n,m)=1gcd(n,m)=1,則μ(nm)=μ(n)μ(m)\mu(nm)=\mu(n)\mu(m)μ(nm)=μ(n)μ(m)

      證明:對n,mn,mn,m唯一分解然后分類討論即可

    • 性質二:設n≥1n \geq 1n1d∣nd | ndndddnnn的因子)

      ∑d∣nμ(d)=[1n]={1n=10n≥2\sum_{d|n}\mu(d) = [\frac{1}{n}] = \left\{\begin{array}{rcl} 1 && n=1 \\ 0 && n \geq 2 \end{array}\right.dn?μ(d)=[n1?]={10??n=1n2?

      證明:n=1n=1n=1時顯然滿足;設n≥2n \geq 2n2,數nnn的唯一分解式為P1ρ1P2ρ2...PsρsP_1^{\rho_1}P_2^{\rho_2}...P_s^{\rho_s}P1ρ1??P2ρ2??...Psρs??ddd的唯一分解式為P1α1P2α2...PsαsP_1^{\alpha_1}P_2^{\alpha_2}...P_s^{\alpha_s}P1α1??P2α2??...Psαs??。根據莫比烏斯函數的定義和積性函數的性質可以得出:

      ∑d∣nμ(d)=∑α1=10∑α2=10...∑αs=10μ(P1α1P2α2...Psαs)=∑10μ(P1α1)∑10μ(P2α2)...∑10μ(Psαs)\sum_{d|n}\mu(d) = \sum_{\alpha_1=1}^0\sum_{\alpha_2=1}^0...\sum_{\alpha_s=1}^0 \mu(P_1^{\alpha_1}P_2^{\alpha_2}...P_s^{\alpha_s}) \\ ~~~~~~~~~~~~~~~~~=\sum_1^0\mu(P_1^{\alpha_1})\sum_1^0\mu(P_2^{\alpha_2})...\sum_1^0\mu(P_s^{\alpha_s})dn?μ(d)=α1?=10?α2?=10?...αs?=10?μ(P1α1??P2α2??...Psαs??)?????????????????=10?μ(P1α1??)10?μ(P2α2??)...10?μ(Psαs??)

      對于某一項∑10μ(Ptαt)=1+(?1)=0\sum_1^0\mu(P_t^{\alpha_t})=1 + (-1) = 010?μ(Ptαt??)=1+(?1)=0,那么所有項乘起來仍為000,原式得證。

    • 性質三:∑d∣nμ(d)d=φ(n)n\sum_{d|n}\frac{\mu(d)}ozvdkddzhkzd= \frac{\varphi(n)}{n}dn?dμ(d)?=nφ(n)?

      證明參見莫比烏斯反演關于φ(n)=∑d∣nμ(d)nd\varphi(n) = \sum_{d|n}\mu(d)\frac{n}ozvdkddzhkzdφ(n)=dn?μ(d)dn?的證明

    求莫比烏斯函數

    求單個數

    int getMu(int n) {if (n == 1) return 1;int m = sqrt(n + 0.5), cnt = 0;for (int i = 2; i <= m; i++) {if (n % i == 0) {if (n % (i * i) == 0) return 0;n /= i;cnt++;}}if (n > 1) cnt++;return cnt & 1 ? -1 : 1; }

    線性篩選

    i%prime[j]!=0i\%prime[j]!=0i%prime[j]!=0,代表iii中不含該質因子,也就是說乘上該質因子后恰好會多出一個系數為111質因子,因此μ(i?prime[j])=?μ(i)\mu(i*prime[j])= - \mu(i)μ(i?prime[j])=?μ(i)

    否則代表含有該質因子且系數會大于等于222,那么μ(i?prime[j])=0\mu(i*prime[j])=0μ(i?prime[j])=0

    bool isprime[maxn]; int mu[maxn], prime[maxn];void initMu() {mu[1] = 1;int cnt = 0;for (int i = 2; i < maxn; i++) {if (!isprime[i]) prime[cnt++] = i, mu[i] = -1;for (int j = 0; j < cnt && i * prime[j] < maxn; j++) {isprime[i * prime[j]] = 1;if (i % prime[j]) mu[i * prime[j]] = -mu[i];else {mu[i * prime[j]] = 0;break;}}} }

    總結

    以上是生活随笔為你收集整理的莫比乌斯函数的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。