莫比烏斯函數及反演學習筆記

来源:https://www.cnblogs.com/OIerBoy/archive/2023/10/11/17753364.html
-Advertisement-
Play Games

前置知識 \(1.\) 艾佛森括弧: \([P]=\begin{cases}1 & \mathtt{(if\ P\ is \ true)}\\0 & \mathtt{(otherwise)}\end{cases}\) \(2.\) \(a\mid b\) 表示 \(a\) 是 \(b\) 的因數 \ ...


前置知識

\(1.\) 艾佛森括弧:
\([P]=\begin{cases}1 & \mathtt{(if\ P\ is \ true)}\\0 & \mathtt{(otherwise)}\end{cases}\)
\(2.\) \(a\mid b\) 表示 \(a\)\(b\) 的因數
\(3.\) 整除分塊:\(\displaystyle\sum_{i=1}^n\lfloor\dfrac{N}{i}\rfloor\)
\(4.\) \(p\) 沒有特殊說明時表示質數
\(5.\) \(\mathbb{P}\) 表示質數集,\(\mathbb{Z}\) 表示整數集。
\(6.\) 常見的函數:

  • 常函數:\(1(x)=1\)
  • 單位元函數:\(\epsilon(x)=[x=1]\)
  • 恆等函數:\(Id_k(x)=x^k\)
  • 因數函數:\(d(x)=\displaystyle\sum_{i\mid x}1\)
  • 因數和函數:\(\sigma(x)_k=\displaystyle\sum_{i\mid x}i^k\)
  • 歐拉函數:\(\varphi(x)=\displaystyle\sum_{i=1}^x[\gcd(i,x)=1]\)

函數

數論函數

數論函數指一類定義域是正整數,值域是一個數集的函數。有:

  • \((f+g)(x)=f(x)+g(x)\)
  • \((x*f)(n)=x*f(n)\)

積性函數

當數論函數 \(f\) 對於 \(\gcd(n,m)=1\) 有:

\[f(nm)=f(n)f(m) \]

則數論函數 \(f\) 為積性函數。
例如:\(d(x),\varphi(x)\)

完全積性函數

當積性函數 \(f\) 對於 \(\gcd(n,m)\not=1\) 仍有:

\[f(nm)=f(n)f(m) \]

則積性函數 \(f\) 為完全積性函數。
例如:\(\epsilon(x),id_k(x)\)

狄利克雷捲積 (dirichlet)

定義兩個函數 \(f(n)\)\(g(n)\) 的狄利克雷捲積 \((f*g)(n)\) 其中 \(*\) 為捲積符號:

\[t(n)=\displaystyle\sum_{i|n}f(i)g(\dfrac{n}{i})\Leftrightarrow \displaystyle\sum_{ij}f(i)g(j) \]

同時狄利克雷捲積滿足以下一些性質:

  • \(f*g=g*f\)
  • \((f*g)*h=f*(g*h)\)
  • \(f*h+g*h=(f+g)*h\)
  • \((xf)*g=x(f*g)\)
  • \(\epsilon*f=f\)
  • 對於每一個 \(f(1)\not=1\) 的函數 \(f\) 都有逆元 \(g\),使得 \(f*g=\epsilon\)

那麼對於一個 \(f(1)\not=1\) 的函數 \(f\) 的逆元 \(g\) 該如何計算呢
我們只需要通過狄利克雷捲積的定義簡單推導一下得到:

\[g(n)=\dfrac{1}{f(1)}\left([n=1]-\displaystyle\sum_{i\mid n,i\not=1}f(i)g(\frac{n}{i})\right) \]

這樣就有:\(\displaystyle\sum_{i\mid n}f(i)g(\dfrac{n}{i})=f(1)g(n)+\displaystyle\sum_{i\mid n,i\not=1}=[n=1]=\epsilon\)

歐拉函數 (Euler)

定義

歐拉函數用 \(\varphi\) 表示,定義:

\[\varphi(n)=\displaystyle\prod_{i=1}^n[\gcd(i,n)=1] \]

解釋:\(\varphi(n)\) 表示 \(1\sim n\) 中與 \(n\) 互質的數的個數。

公式

先設 \(n=\displaystyle\prod_{i=1}^kp_i^{t_i}\),則有:

\[\varphi(n)=n\displaystyle\prod_{i=1}^k\left(1-\dfrac{1}{p_i}\right) \]

證明:
我們先假設 \(n\in\mathbb{N^+}\) 只存在質因數 \(p,q\)
考慮容斥,與 \(n\) 互質的數就是所有數減去 \(p,2p,\cdots,\lfloor\dfrac{n}{p}\rfloor,q,2q,\cdots,\lfloor\dfrac{n}{q}\rfloor\)
同時根據容斥原理,需要補回 \(pq,2pq,\cdots,\lfloor\dfrac{n}{pq}\rfloor\)
\(\varphi(n)=n-\dfrac{n}{p}-\dfrac{n}{q}+\dfrac{n}{pq}=n\left(1-\dfrac{1}{p}\right)\left(1-\dfrac{1}{q}\right)\)
那麼同理,當 \(n=\displaystyle\prod_{i=1}^{k}p_i^{t_i}\) 時,有:

\[\varphi(n)=n\left(1-\dfrac{1}{p_1}\right)\left(1-\dfrac{1}{p_2}\right)\cdots\left(1-\dfrac{n}{p_k}\right)=n\displaystyle\prod_{i=1}^k\left(1-\dfrac{1}{p_i}\right) \]

積性函數

函數 \(\varphi\) 滿足 \(\varphi(nm)=\varphi(n)\varphi(m)\ \ \ (\gcd(n,m)=1)\)
\(\varphi\) 為積性函數。

證明:
\(n=\displaystyle\prod_{i=1}^kp_i^{a_i},m=\displaystyle\prod_{i=1}^tq_i^{b_i}\ \ \ (\gcd(n,m)=1)\)

\[\begin{aligned}\varphi(nm)= & nm\displaystyle\prod_{i=1}^k\left(1-\dfrac{1}{p_i}\right)\displaystyle\prod_{j=1}^t\left(1-\dfrac{1}{q_j}\right)\\= & n\displaystyle\prod_{i=1}^k\left(1-\dfrac{1}{p_i}\right)m\displaystyle\prod_{j=1}^t\left(1-\dfrac{1}{q_j}\right)\\ = & \varphi(n)\varphi(m)\end{aligned} \]

性質

\[\displaystyle\sum_{d\mid n}\varphi(d)=n\Leftrightarrow \varphi*1=Id \]

證明:
\(f(n)=\displaystyle\sum_{d\mid n}\varphi(d)\)。則由於:
\(f(n)f(m)=\displaystyle\sum_{i\mid n}\varphi(i)\displaystyle\sum_{j\mid n}\varphi(j)=\displaystyle\sum_{d\mid nm}\varphi(d)=f(nm)\)
可以得到 \(f(n)\) 為積性函數。
\(n=\displaystyle\prod_{i=1}^kp_i^{t_i}\)
而對於 \(f(p^c)=\displaystyle\sum_{i=1}^c\varphi(p^i)=\displaystyle\sum_{i=1}^cp^i-p^{i-1}=p^c\)
\(\therefore f(n)=\displaystyle\prod_{i=1}^kf(p_i^{t_i})=\displaystyle\prod_{i=1}^kp_i^{t_i}=n\)

實現

我們可以通過線性篩篩質數的時候是順便就把歐拉函數篩出來。

void Euler(int n){
    phi[1]=1;
    for (int i=2;i<=n;i++){
        if (!isp[i])primes.push_back(i),phi[i]=i-1;
        for(auto p:primes){
            if(p*i>n)break;
            isp[p*i]=1;
            if (!(i%p)){
                phi[p*i]=phi[i]*p;
                break;
            }else phi[p*i]=phi[p]*phi[i];
        }
    }
}

莫比烏斯函數 (Möbius)

定義

莫比烏斯函數用 \(\mu\) 表示,定義:

\[\mu(x)=\begin{cases}0 & x=1\\1 & \exists p\in\mathbb{Z},p^2\mid x\\(-1)^k & \displaystyle\prod_{i=1}^kp_i(1\le i,j\le j,p_i\not=p_j)\end{cases} \]

解釋一下對 \(\mu(x)\) 的定義:

  • \(x=1\) 時,\(\mu(x)=1\)
  • \(x\) 含有任何的質因數的冪次 \(\ge 2\)\(\mu(x)=0\)
  • \(x=\displaystyle\prod_{i=1}^kp_i\),且所有 \(p_i\) 的互不相同時,\(\mu(x)=(-1)^k\)

性質

只知道莫比烏斯函數的定義還遠遠不夠,我們還需要瞭解一下他的性質:

  • \(n\in\mathbb{N^+},\displaystyle\sum_{d\mid n}\mu(d)=[n=1],\mu*1=\epsilon\)

證明:

\(n=1\) 時,\(\displaystyle\sum_{d|n}=\mu(1)=1=[n=1]\)

\(n>1\) 時,我們記 \(n=\displaystyle\prod_{i=1}^kp_i^{t_i}\)
\(\exists t_i,t_i>1\) 時,\(\mu(n)=0\)
\(\forall t_i,t_i=1\) 時,對於 \(\mu(d)=(-1)^r\) 這樣的存在 \(C_k^r\) 個。
\(\therefore \displaystyle\sum_{d\mid n}\mu(d)=C_k^0+C_k^1+C_k^2+\cdots+(-1)^kC_k^k=\displaystyle\sum_{i=0}^k(-1)^iC_k^i\)
由二項式定理:\((x+y)^n=\displaystyle\sum_{i=0}^nC_n^ix^iy^{n-i}\)
\(\therefore \displaystyle\sum_{d\mid n}\mu(d)=\displaystyle\sum_{i=0}^k(-1)^iC_k^i=(-1+1)^n=0\)

  • \(\displaystyle\sum_{d\mid n}\dfrac{\mu(d)}{d}=\dfrac{\varphi(n)}{n}\)

證明:
\(\begin{aligned}\displaystyle\sum_{d\mid n}\dfrac{\mu(d)}{d}=&\displaystyle\sum_{d\mid n}\dfrac{\mu(d)\frac{n}{d}}{n}\\=& \dfrac{\displaystyle\sum_{d\mid n}\mu(d)Id\left(\frac{n}{d}\right)}{n}\\= & \dfrac{\mu(n)*Id(n)}{n}\end{aligned}\)
根據 \(\varphi*1=Id\Leftrightarrow\varphi*1*\mu=\mu*Id\Leftrightarrow\varphi*\epsilon=\mu*Id\)
\(\displaystyle\sum_{d\mid n}\dfrac{\mu(d)}{d}=\dfrac{\mu(n)*Id(n)}{n}=\dfrac{\varphi(n)}{n}\)

實現

和歐拉函數一樣,也可以在篩質數的時候順便得到。

void getMu(int n){
    mu[1]=1;
	isp[0]=isp[1]=1;
    for(int i=2;i<=n;++i){
        if(!isp[i])mu[p[++cnt]=i]=-1;
        for(int j=1;j<=cnt&&p[j]*i<=n;++j){
            isp[i*p[j]]=1;
            if(!(i%p[j]))break;
            else mu[p[j]*i]=-mu[i];
        }
    }
}

莫比烏斯反演

當存在有兩個函數 \(f\)\(g\) 滿足:\(f(n)=\displaystyle\sum_{d|n}g(d)\)\(f=g*1\)
則一定有:

\[g(n)=\displaystyle\sum_{d|n}f(n)\mu(\dfrac{n}{d}),即 g=f*\mu \]

證明:

\[f=g*1\Leftrightarrow f*\mu=g*1*\mu \Leftrightarrow f*\mu=g \]

倍數形式:

\[g(n)=\displaystyle\sum_{n\mid d}f(d)\Leftrightarrow f(n)=\displaystyle\sum_{n\mid d}\mu(\dfrac{d}{n})g(d) \]

例題

\(1.\) P2522 Problem B
\(\displaystyle\sum_{i=a}^b\displaystyle\sum_{j=c}^d[\gcd(i,j)=k]\)

\(f(k)=\displaystyle\sum_{i=1}^n\displaystyle\sum_{j=1}^m[\gcd(i,j)=k],g(n)=\displaystyle\sum_{n\mid k}f(k)\)
則通過莫比烏斯反演的倍數形式可以得到: \(f(x)=\displaystyle\sum_{x\mid k}\mu(\lfloor\dfrac{k}{x}\rfloor)g(k)\)
我們在考慮對於函數 \(g\) 的處理:
\(\begin{aligned}g(x)=&\displaystyle\sum_{x\mid k}\displaystyle\sum_{i=1}^n\displaystyle\sum_{j=1}^m[\gcd(i,j)=k]\\=&\displaystyle\sum_{i=1}^n\displaystyle\sum_{j=1}^m[x\mid \gcd(i,j)]\\=&\displaystyle\sum_{i=1}^{\lfloor\frac{n}{x}\rfloor}\displaystyle\sum_{j=1}^{\lfloor\frac{m}{x}\rfloor}[1\mid \gcd(i,j)]\\=&\lfloor\dfrac{n}{x}\rfloor\lfloor\dfrac{m}{x}\rfloor\end{aligned}\)
我們在將函數 \(g\) 帶回函數 \(f\),同時枚舉 \(\lfloor\dfrac{k}{x}\rfloor\) 記為 \(t\)
\(f(x)=\displaystyle\sum_{t=1}^{\min(n,m)}\mu(t)\lfloor\dfrac{n}{tx}\rfloor\lfloor\dfrac{m}{tx}\rfloor\)
那麼對於最後的答案我們只需要一個簡單的容斥:
\(ans=\displaystyle\sum_{i=1}^b\displaystyle\sum_{j=1}^d[\gcd(i,j)=k]-\displaystyle\sum_{i=1}^{a-1}\displaystyle\sum_{j=1}^d[\gcd(i,j)=k]-\displaystyle\sum_{i=1}^b\displaystyle\sum_{j=1}^{c-1}[\gcd(i,j)=k]+\displaystyle\sum_{i=1}^{a-1}\displaystyle\sum_{j=1}^{c-1}[\gcd(i,j)=k]\)
通過上的函數 \(f,g\) 帶入即可,通過整除分塊可以得到時間複雜度 \(O(\sqrt{n})\)


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Effect的概念起源 從輸入輸出的角度理解Effect https://link.excalidraw.com/p/readonly/KXAy7d2DlnkM8X1yps6L 編程中的Effect起源於函數式編程中純函數的概念 純函數是指在相同的輸入下,總是產生相同的輸出,並且沒有任何副作用(si ...
  • 移動互聯網風起雲涌的數十年來,App 似乎成為了企業與用戶打交道最“理所當然”的形式,更年輕一代的用戶甚至可能認為 App 就是一個“與生俱來”的事物,但隨著移動互聯網發展的高峰離去,App 面臨著發展的困境和疲態。最明顯的感知就是這幾年以微信、支付寶、抖音等“超級 App”們大行其道,占據了用戶超... ...
  • 我們是袋鼠雲數棧 UED 團隊,致力於打造優秀的一站式數據中台產品。我們始終保持工匠精神,探索前端道路,為社區積累並傳播經驗價值。 本文作者:佳嵐 回顧傳統React動畫 對於普通的 React 動畫,我們大多使用官方推薦的 react-transition-group,其提供了四個基本組件 Tra ...
  • 常用的物聯網管理系統主要有以下幾種:智能家居系統:通過物聯網技術,將家庭設備和電器互聯起來,實現智能化控制和管理的系統。智能家居系統可以實現家庭設備的遠程式控制制、智能化場景設置、安防監控等功能,方便用戶提高家居生活的便利性和舒適度。智能工廠系統:利用物聯網技術,通過互聯的工廠設備、感測器和電腦系統來 ...
  • 一、引言 在當今數字化時代,零售業正迅速發展,消費者的購物行為和期望發生了巨大的變化。為了滿足不斷增長的需求,零售企業必須構建高度靈活、穩健可靠的商品系統。 本文將深入探討零售商品系統的底層邏輯,聚焦領域驅動設計(DDD)和複雜業務系統架構經驗,揭示其在零售業務中的應用和價值。 二、面臨的挑戰 商品 ...
  • 一、項目地址 https://github.com/LinFeng-BingYi/DailyAccountBook 二、新增 1. 增加刪除記錄功能 1.1 功能詳述 點擊刪除按鈕後,獲取對應行的數據組成字典,用字典的鍵值對匹配到對應日期的記錄元素; 接著用該字典數據沖正存款賬戶餘額(實現思路為新增 ...
  • 集合 集合用於在單個變數中存儲多個項。集合是 Python 中的 4 種內置數據類型之一,用於存儲數據集合,其他 3 種是列表(List)、元組(Tuple)和字典(Dictionary),它們都具有不同的特性和用途。集合是一種無序、不可更改(*)、無索引的集合。 創建一個集合 集合用大括弧表示。 ...
  • 我們先瞭解下,為什麼需要配置日期格式化? 通常情況下,發起一個 Http 請求,Spring Boot 會根據請求路徑映射到指定 Controller 上的某個方法的參數上,接著,Spring 會自動進行類型轉換。 對於日期類型的參數,Spring 預設是沒有配置如何將字元串轉換成日期類型的 未配置 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...