ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

欧几里得与拓展欧几里得算法学习笔记

2022-05-09 12:31:35  阅读:162  来源: 互联网

标签:gcd int bmod mid 笔记 算法 最大公约数 欧几里得


欧几里得与拓展欧几里得

欧几里得算法

欧几里得算法是一种快速求出最大公约数的算法。

内容

对于任意的两个整数 \(a,b\),其最大公约数 \(\gcd(a,b) = \gcd(b,a \bmod b)\)。

证明

  • 对于 \(b>a\) 的情况 ,显然成立。
  • 因此只考虑 \(b<a\) 的情况。设 \(a=q \times b +p,\left( q=\left\lfloor\dfrac{a}{b}\right\rfloor,p=a-b \times\left\lfloor\dfrac{a}{b}\right\rfloor=a\bmod b \right)\)
    • 对于 \(g_1=\gcd(a,b)\),显然存在 \(g_1\mid a,g_1\mid b\),由此易得 \(g_1\mid p\),其中\(\ g_1\mid a\) 表示 $a \bmod g_1 =0\ $。
    • 又因为 \(p=a\bmod b\),所以对于 \(a,b\) 的最大公约数 \(g_1\),同样满足 \(g_1\mid a\bmod b,g_1\mid b\),即 \(b,a\bmod b\) 的最大公约数至少为 \(g_1\),即 \(\gcd(b,a \bmod b) > g1=\gcd(a,b)\)。
    • 反过来,对于 \(b,a\bmod b\) 的最大公约数 \(g_2=\gcd(b,a\bmod b)\),同样满足 \(g_2 \mid a,g2 \mid b\),即 \(\gcd(a,b)>g2=\gcd(b,a \bmod b)\)。
  • 因此 \(\gcd(a,b)=\gcd(b,a \bmod b)\) 证明成立。

代码实现

#include <bits/stdc++.h>
using namespace std;
int gcd(int a,int b){return b?gcd(b,a%b):a;}
int main(){
	int a,b;cin>>a>>b;
	cout<<gcd(a,b)<<endl;return 0;
}

拓展欧几里得算法

咕咕咕……

标签:gcd,int,bmod,mid,笔记,算法,最大公约数,欧几里得
来源: https://www.cnblogs.com/AIskeleton/p/16248753.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有