輾轉相除法(歐幾里得算法)的證明

歡迎訪問我的主頁: https://heeheeaii.github.io/

輾轉相除法是一種用于計算兩個非負整數最大公約數的有效算法。它的證明主要分為兩個部分:

  • 證明核心引理: gcd(a,b)=gcd(b,amodb)
  • 證明算法的收斂性: 證明算法一定會在有限步內結束。

輾轉相除法簡介

在開始證明之前,先回顧一下輾轉相除法的步驟。對于任意兩個正整數 a 和 b (不妨設 a>b):

  1. 用 a 除以 b,得到商 q 和余數 r。即 a=qb+r,其中 0≤r<b。
  2. 如果余數 r 為 0,那么 b 就是 a 和 b 的最大公約數。
  3. 如果余數 r 不為 0,則將原來的除數 b 作為新的被除數,將余數 r 作為新的除數,重復第一步。

如此循環,直到余數為 0。此時,最后一次計算中的除數就是原始 a 和 b 的最大公約數。

引理: 設 a,b 為兩個正整數,且 a=qb+r(其中 q 為商, r 為余數,0≤r<b),那么 a 和 b 的最大公約數等于 b 和 r 的最大公約數。即:gcd(a,b)=gcd(b,r)。

證明過程:

為了證明這個等式,只需要證明 (a,b) 的公約數集合與 (b,r) 的公約數集合是完全相同的。如果兩個集合完全相同,那么它們各自的最大元素(即最大公約數)也必然相等。

1. 證明:任何 (a,b) 的公約數 d,也一定是 (b,r) 的公約數。

假設 d 是 a 和 b 的一個任意公約數。根據公約數的定義,有 d∣a 和 d∣b。(這里的 ∣ 表示“整除”)。

因為 d 能整除 a 和 b,所以 d 也能整除它們的任意線性組合。將算法中的等式 a=qb+r 變形為 r=a?qb。因為 d∣a 且 d∣b,所以 d 必然能整除 a?qb。因此,得到 d∣r。

既然已知 d∣b 且證明了 d∣r,那么 d 就是 b 和 r 的一個公約數。

2. 證明:任何 (b,r) 的公約數 d′,也一定是 (a,b) 的公約數。

假設 d′ 是 b 和 r 的一個任意公約數。根據定義,有 d′∣b 和 d′∣r。

因為 d′ 能整除 b 和 r,所以 d′ 也能整除它們的任意線性組合。從算法等式 a=qb+r 中,可以看到 a 正是 b 和 r 的一個線性組合。因為 d′∣b(所以 d′∣qb)且 d′∣r,所以 d′ 必然能整除 qb+r。因此,得到 d′∣a。

既然已知 d′∣b 且證明了 d′∣a,那么 d′ 就是 a 和 b 的一個公約數。

1. 算法為什么一定會終止?

在輾轉相除法的每一步中,都有一個等式: ri?1=qi?ri+ri+1

其中 ri?1 是被除數,ri 是除數,ri+1 是余數。根據整數除法的性質,余數必須嚴格小于除數,且不能為負數。所以得到一個余數序列: b>r1>r2>r3>?>rn≥0

這是一個由非負整數組成的嚴格遞減序列。任何由非負整數組成的嚴格遞減序列最終必然會達到 0。因此,算法一定會在有限步內終止,即一定會出現某一步的余數 rn+1=0。

2. 為什么余數為 0 時,當時的除數就是最大公約數?

根據核心引理,可以將求 gcd(a,b) 的過程轉化為一個鏈條: gcd(a,b)=gcd(b,r1)=gcd(r1,r2)=?=gcd(rn?1,rn)

當算法進行到最后一步時,余數為 0。假設這一步的表達式為: rn?1=qn+1?rn+0

這表示 rn 能夠整除 rn?1。那么,需要求解的就是 gcd(rn?1,rn)。根據最大公約數的定義,一個數 (rn?1) 和它的約數 (rn) 的最大公約數就是那個約數本身 (rn)。 所以,gcd(rn?1,rn)=rn。

將這個結果代入上面的等式鏈條,得到: gcd(a,b)=gcd(rn?1,rn)=rn

這里的 rn 正是算法終止前的最后一個非零余數,也就是最后一步計算中的除數。

舉例說明:

用 gcd(1071,462) 來演示這個過程:

  • 1071=2?462+147 根據引理:gcd(1071,462)=gcd(462,147)
  • 462=3?147+21 根據引理:gcd(462,147)=gcd(147,21)
  • 147=7?21+0 根據引理:gcd(147,21)=gcd(21,0) 此時余數為 0,算法終止。最后一步的除數是 21。

把整個鏈條連起來: gcd(1071,462)=gcd(462,147)=gcd(147,21)=21

所以,1071 和 462 的最大公約數是 21。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/95768.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/95768.shtml
英文地址,請注明出處:http://en.pswp.cn/web/95768.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

RL【3】:Bellman Optimality Equation

系列文章目錄 文章目錄系列文章目錄前言Definition of optimal policyBellman optimality equationIntroductionMaximization on the right-hand sideContraction mapping theoremSolutionOptimalityAnalyzing optimal policies總結前言 本系列文章主要用于記錄 B站 趙世鈺老師…

有序數組,距離目標最近的k個數 二分查找

&#x1f914; 新手做題思路&#xff1a;第1步&#xff1a;理解題目- 找距離x最近的k個數- 數組已排序- 返回結果也要排序&#xff08;升序&#xff09;- 距離相同時&#xff0c;選擇較小的數第2步&#xff1a;關鍵insight- 數組已排序 → 考慮二分查找- 最近的k個數一定是連續…

學習心得分享

我認為知識是一定要系統化的學習&#xff0c;結構化梳理&#xff0c;這樣在運用或思考的時候&#xff0c;能夠回憶起自己在這一塊梳理的知識結構&#xff0c;如果有記錄那么能快速回憶并理解&#xff0c;如果沒有記錄&#xff0c;那么說明對自己來說超綱了&#xff0c;把知識進…

為什么說 Linode 和 DigitalOcean 的差距,不止于 VPS?

在今天這個全球化的商業戰場上&#xff0c;中國企業的出海已從“選擇題”變為“必答題”。當我們滿懷雄心&#xff0c;將產品和業務推向海外市場時&#xff0c;基礎設施的選擇&#xff0c;往往是決定成敗的第一步。它不僅關乎成本與性能&#xff0c;更直接影響著團隊的開發效率…

NSSCTF每日一題_Web_[SWPUCTF 2022 新生賽]奇妙的MD5

為了保持做題的感覺和持續學習&#xff0c;也就有了每日一題系列&#xff0c;選一些有意義的題目或者一些CTF新穎題目作為參考學習。[SWPUCTF 2022 新生賽]奇妙的MD51. 訪問首頁界面并進行分析估計題目MD5提示,查詢得知ffifdyop 這個字符串是一個奇妙的MD5字符串因為將“ffifdy…

服務器IP暴露被攻擊了怎么辦?

當服務器IP暴露后&#xff0c;可能會面臨各種網絡攻擊&#xff0c;如DDoS攻擊、端口掃描、惡意入侵等&#xff0c;這將嚴重影響服務器的正常運行和數據安全。本文將從檢測攻擊類型、采取緊急防護措施、優化服務器配置、尋求專業支持以及預防未來攻擊五個方面&#xff0c;詳細探…

TDengine 時間函數 TIMETRUNCATE 用戶手冊

TDengine TIMETRUNCATE 函數用戶使用手冊 函數概述 TIMETRUNCATE 是 TDengine 中的一個時間處理標量函數&#xff0c;用于將時間戳按照指定的時間單位進行截斷操作。該函數在時間數據聚合、分組和統計分析中非常有用&#xff0c;特別適用于智能電表等時序數據的分析場景。 語…

Linux電腦怎樣投屏到客廳的大電視?支持遠程投屏嗎?

一般的電腦投屏軟件都會推出Windows版本和macOS版本&#xff0c;雖然這兩個版本已經覆蓋大部分消費者的常用電腦&#xff0c;但是依然有一部分群體因為電腦系統版本問題不能使用投屏軟件。 如果你當前使用的是Linux系統的電腦&#xff0c;而且又要將電腦投屏投屏到客廳的大電視…

MP4視頻太大如何壓縮?分享6種簡單便捷的壓縮小技巧

隨著拍攝高清視頻的設備越來越多&#xff0c;我們經常會遇到MP4視頻文件體積過大的問題&#xff0c;無論是上傳到社交平臺、發送給朋友&#xff0c;還是存儲在設備中&#xff0c;過大的視頻文件都會帶來諸多不便。那么&#xff0c;MP4視頻太大怎么壓縮呢&#xff1f;本文將介紹…

k8s 部署 redis

創建部署文件 vim redis.yaml添加如下內容&#xff1a; apiVersion: v1 kind: Namespace metadata:name: redis --- apiVersion: v1 kind: Secret metadata:name: redis-passwordnamespace: redis type: Opaque data:password: d2d3cmhnZWE # 建議生產環境使用更復雜的密碼 ---…

FFMPEG H264

一、H264壓縮編碼1.1 H264 中的 I 幀、P幀和 B幀H264 使用幀內壓縮和幀間壓縮的方式提高編碼壓縮率&#xff1b;H264 采用了獨特的 I 幀、P 幀和 B 幀策略來實現&#xff0c;連續幀之間的壓縮&#xff1b;1.2 其他概念GOP&#xff08;圖像組&#xff09;&#xff1a;一個IDR幀到…

Unity 解決天空盒中間出現一條線

問題解決找到天空盒對應貼圖&#xff0c;在Inspector 面板中找到Advanced →Generate Mip Maps 并取消勾選即可。效果動態修改天空盒RenderSettings.skybox targetSkyboxMaterial; DynamicGI.UpdateEnvironment();

Python爬蟲實戰:研究Showcase模塊,構建電商平臺銷售數據采集和分析系統

1. 引言 1.1 研究背景 在數字經濟快速發展的今天,電商平臺積累了海量的商品信息、交易數據和用戶反饋,這些數據蘊含著豐富的市場洞察。根據中國電子商務研究中心數據,2024 年我國網絡零售市場規模突破 15 萬億元,平臺商品數據呈現指數級增長。如何高效提取這些數據并轉化…

C++中的Reactor和Proactor模型進行系統性解析

<摘要> 本解析系統闡述了網絡編程中Reactor與Proactor兩種高性能I/O模型的核心概念。Reactor基于同步I/O多路復用&#xff0c;通過事件循環分發通知&#xff0c;由應用層自行完成I/O操作&#xff1b;而Proactor則基于異步I/O&#xff0c;由操作系統完成I/O操作后主動回調…

【技術教程】如何將文檔編輯器集成至基于Node.js的網頁應用程序中

當今數字化時代&#xff0c;Web應用對在線文檔編輯的需求日益增長。無論是構建在線辦公系統、內容管理平臺還是協作工具&#xff0c;讓用戶能夠直接在瀏覽器中編輯和處理文檔已成為基本需求。 想知道如何為你的 Node.js 應用添加強大的在線文檔編輯功能嗎&#xff1f;本文手把…

[論文閱讀] 人工智能 + 軟件工程 | 別讓AI寫的代碼帶“漏洞”!無觸發投毒攻擊的防御困境與啟示

別讓AI寫的代碼帶“漏洞”&#xff01;無觸發投毒攻擊的防御困境與啟示 論文信息 原標題&#xff1a;Evaluating Defenses Against Trigger-Free Data Poisoning Attacks on NL-to-Code Models&#xff08;評估NL-to-Code模型應對無觸發數據投毒攻擊的防御方法&#xff09;主要…

【Windows】通過 runas 命令實現多用戶權限測試的完整流程

? 目錄 ?&#x1f6eb; 導讀需求1?? 前期準備&#xff1a;創建管理員/普通測試用戶1.1 創建普通用戶Test&#xff08;無管理員權限&#xff09;1.2 創建管理員用戶Admin&#xff08;含管理員權限&#xff09;2?? 核心操作&#xff1a;通過runas命令切換用戶命令行環境2.1…

新后端漏洞(上)- H2 Database Console 未授權訪問

漏洞介紹&#xff1a; H2 database是一款Java內存數據庫&#xff0c;多用于單元測試。 H2 database自帶一個Web管理頁面&#xff0c;在Spirng開發中&#xff0c;如果我們設置如下選項&#xff0c;即可允許外部用戶訪問Web管理頁面&#xff0c;且沒有鑒權&#xff1a; spring.h2…

2025-09-04 HTML3——區塊布局與表單

文章目錄1 塊元素與行內元素1.1 塊元素 (Block-level Element)1.2 行內元素 (Inline Element)2 HTML 布局2.1 使用 <div> 元素2.2 使用 <table> 元素3 表單 (<form>)3.1 輸入域&#xff08;<input>&#xff09;3.1.1 文本域&#xff08;Text Fields&am…

云數據庫服務(參考自騰訊云計算工程師認證課程)更新中......

數據庫基礎介紹面臨的挑戰&#xff1a;數據庫系統架構&#xff1a; 數據庫DB、數據庫管理系統DBMS&#xff08;負責數據庫的搭建、使用和維護的系統軟件&#xff0c;通過組織、索引、查詢、修改數據庫文件、實現數據定義、組織、存儲、管理以及數據庫操作、運行和維護等主要功能…