【欧几里得定理】

定义:

  • gcd ⁡ ( a , b ) = gcd ⁡ ( b , a m o d    b ) \gcd(a,b)=\gcd(b,a\mod b) gcd(a,b)=gcd(b,amodb)

应用:

故得到 求解gcd的辗转相除法

模板:

int gcd(int a,int b)
{return b?gcd(b,a%b):a;
}int lcm(int a,int b)
{return a/gcd(a,b)*b;      //这样写防止溢出
}

【拓展欧几里得】

定义:

  • 已知 a , b a, b a,b求解一组 x , y x,y x,y,使它们满足贝祖等式: a x + b y = gcd ⁡ ( a , b ) = d ax+by =\gcd(a, b) =d ax+by=gcd(a,b)=d(解一定存在)

推导:

已知: a x 1 + b y 1 = gcd ⁡ ( a , b ) = d ax_1+by_1=\gcd(a,b)=d ax1​+by1​=gcd(a,b)=d —— ①
    b x 2 + ( a m o d    b ) y 2 = gcd ⁡ ( b , a m o d    b ) = d bx_2+(a\mod b)y_2=\gcd(b,a\mod b)=d bx2​+(amodb)y2​=gcd(b,amodb)=d —— ②

由欧几里得定理 gcd ⁡ ( a , b ) = gcd ⁡ ( b , a m o d    b ) \gcd(a,b)=\gcd(b,a\mod b) gcd(a,b)=gcd(b,amodb),
可得: a x 1 + b y 1 = b x 2 + ( a m o d    b ) y 2 ax_1+by_1=bx_2+(a\mod b)y_2 ax1​+by1​=bx2​+(amodb)y2​
   ⟹    a x 1 + b y 1 = b x 2 + ( a − [ a b ] b ) y 2 \implies ax_1+by_1=bx_2+(a-[\frac{a}{b}]b)y_2 ⟹ax1​+by1​=bx2​+(a−[ba​]b)y2​
   ⟹    a x 1 + b y 1 = a y 2 + b ( x 2 − [ a b ] y 2 ) \implies ax_1+by_1=ay_2+b(x_2-[\frac{a}{b}]y_2) ⟹ax1​+by1​=ay2​+b(x2​−[ba​]y2​)

所以解得: x 1 = y 2        y 1 = x 2 − [ a b ] y 2 x_1=y_2\;\;\;y_1=x_2-[\frac{a}{b}]y_2 x1​=y2​y1​=x2​−[ba​]y2​

当我们已知 x 2 , y 2 x_2,y_2 x2​,y2​时,便可以往回推导得到 x 1 , y 1 x_1,y_1 x1​,y1​。可以发现,当 b = 0 b=0 b=0(即辗转相除结束)时,有 d = a , x = 1 d=a,x=1 d=a,x=1,所以可以得到一组 x , y x,y x,y: x = 1 , y = 0 x=1,y=0 x=1,y=0( y y y可以为任意值,通常取0),然后以此解回推,即可得到一组特解 x 0 , y 0 x_0,y_0 x0​,y0​。

模板:

void exgcd(int a,int b,int &d,int &x,int &y)
{if(b==0){x=1;y=0;d=a;}else{exgcd(b,a%b,d,y,x);y-=x*(a/b)}
}

从特解到通解:

已解得一组特解 x 0 , y 0 x_0,y_0 x0​,y0​,满足: a x 0 + b y 0 = gcd ⁡ ( a , b ) = d ax_0+by_0 =\gcd(a, b) =d ax0​+by0​=gcd(a,b)=d

  1. 对于: a x + b y = gcd ⁡ ( a , b ) = d ax+by =\gcd(a, b) =d ax+by=gcd(a,b)=d

    通解为: X = x 0 + k b d            Y = y 0 − k a d          ( k ∈ Z ) X=x_0+k\frac{b}{d}\;\;\;\;\;Y=y_0-k\frac{a}{d}\;\;\;\;(k\in Z) X=x0​+kdb​Y=y0​−kda​(k∈Z)

  2. 对于: a x + b y = c ax+by =c ax+by=c

    当且仅当 d ∣ c d|c d∣c( 即 gcd ⁡ ( a , b ) \gcd(a,b) gcd(a,b)整除 c c c,或者说 c c c被 gcd ⁡ ( a , b ) \gcd(a,b) gcd(a,b)整除 )时,有解

    通解为: X = c d x 0 + k b d            Y = c d y 0 − k a d          ( k ∈ Z ) X=\frac{c}{d}x_0+k\frac{b}{d}\;\;\;\;\;Y=\frac{c}{d}y_0-k\frac{a}{d}\;\;\;\;(k\in Z) X=dc​x0​+kdb​Y=dc​y0​−kda​(k∈Z)

应用:

①求解方程(形如 a x + b y = c ax+by =c ax+by=c)的特解/通解

例如要求求出平面内,直线 a x + b y = c ax+by=c ax+by=c上在某些范围内的整数点。

②※ 求解线性同余方程: a x = c ( m o d b ) ax=c\pmod b ax=c(modb)

详见:线性同余方程的求解 及 模板题

③求单个逆元

求 a a a在 m o d    p \mod p modp下的逆元,设 a a a的逆元为 x x x

即求解线性同余方程: a x = 1 ( m o d p ) ax=1\pmod p ax=1(modp)

欧几里得定理 及 拓展欧几里得 小结相关推荐

  1. 关于欧几里得定理和拓展欧几里得定理的理解 续

    前言 在我大一刚开始ACM的时候,写过一篇关于欧几里得定理理解的博客,这几天因为再次用到欧几里得定理,所以又转回去看了看,感觉自己以前写的不是很清楚,所以决定再写一篇关于欧几里得定理以及拓展欧几里得定 ...

  2. 数学--数论--欧几里得定理和拓展欧几里得定理

    欧几里得定理: gcd(a, b) = gcd(b, a%b) 证明: 我们首先约定:m = gcd(a,b) , n = gcd(b, q) , a = b*p +q.(这里的gcd含义跟上面一样, ...

  3. 欧几里得定理与扩展欧几里得定理

    欧几里的定理(辗转相除法): gcd(a,b) = gcd(b,a%b) gcd(a,b)表示a,b的最大公约数 证明: 设 a > b c = a%b a = k * b + c (k为某个整 ...

  4. 裴蜀定理、拓展欧几里得及其证明

    定理 裴蜀定理(贝祖定理)是一个关于最大公约数的定理. 裴蜀定理说明了对任何整数a,b和它们的最大公约数d,关于未知数x和y的线性不定方程:若a,b是整数,且 g c d ( a , b ) = d ...

  5. 欧几里得定理与扩展欧几里得

    3,欧几里德定理:(射影定理) 定理指出素数是无限的. a*b*c+1要么是素数要么其质因子就是素数. 扩展欧几里得: 扩展欧几里得算法是欧几里得(又叫辗转相除法)的扩展.已知整数a.b,扩展欧几里得 ...

  6. 扩展欧几里得定理的证明和代码

    1.欧几里得算法,gcd(a,b)为a b(a>b)的最大公约数,则gcd(a,b) = acd(b, a%b) 利用这个定理我们可以反复对ab模下去求得a和b的最大公约数 代码如下 int G ...

  7. 拓展欧几里得定理的应用

    扩展欧几里得定理的运用 首先,先重复一下拓展欧几里得的内容: 对于不全为 0 的整数a.b,一定存在一组解 x,y,使得 ax + by == gcd(a,b) 先说一下这个定理的三个用处(但是小细节 ...

  8. 拓展欧几里得模板/求逆元模板(java)

    拓展欧几里得模板 参考:哈尔滨理工大学ACM培训资料汇编/ACM-ICPC培训资料汇编* 基本原理 :设 a 和 b 不全为 0,则存在整数 x,y 使得 xa yb=gcd(a,b)=c 对于辗转相 ...

  9. A/B HDU - 1576 (逆元或拓展欧几里得或数学公式)多解法求大数结果

    题意:求(A/B)%9973,但由于A很大,我们只给出n(n=A%9973)(我们给定的A必能被B整除,且gcd(B,9973) = 1). 思维:(1)逆元+扩展欧几里得算法:满足a*k≡1 (mo ...

最新文章

  1. 【R语言学习】时间序列
  2. Android之加载外部dex
  3. 北京大力度建设城市绿道,我们身边处处是风景
  4. Airtable(数据管理)
  5. 【转】HashTable 和 HashMap的区别
  6. 组件接口(API)设计指南-文件夹
  7. 用RAII技术管理资源及其泛型实现
  8. 云服务器怎么装mysql_云服务器(windows环境)安装mysql图文教程
  9. C#设计模式之二十一访问者模式(Visitor Pattern)【行为型】
  10. 设置PDF文件默认缩放比例
  11. LeetCode 655. Print Binary Tree (C++)
  12. 取出大文件里面的一部分数据
  13. 网站自动跳转到Cjb.Net的惊险之旅
  14. NodeJS实现HTTP/HTTPS代理 - 刘春龙的博客
  15. 【传统CV】Anovel adaptive morphological approach for degraded character image segmentation
  16. 5分钟python爬虫案例,手把手教爬取国内外最新疫情历史数据
  17. 如何提高思维能力(不止针对程序猿)
  18. word 去除 文字 浅灰色背景
  19. 第四集 孤胆翻越橡皮山,丈量生命之厚度
  20. CSDN产品设计-脑残

热门文章

  1. 【电子产品】ThinkPad 黑将S5 尺寸
  2. 换张 SIM 卡就能用上「量子密话」?中国电信的新服务是黑科技还是智商税
  3. 小程序商城模板下载|分销|拼团|仿拼多多
  4. Vue上传图片并展示
  5. 【机器学习入门】(9) 逻辑回归算法:原理、精确率、召回率、实例应用(癌症病例预测)附python完整代码和数据集
  6. 解决手机连上笔记本wifi几分钟后就上不了网
  7. 论文速读:自监督弱光图像增强:Self-supervised Image Enhancement Network: Training with Low Light Images Only
  8. M102: MongoDB for DBAs chapter 3 performance学习记录
  9. M102: MongoDB for DBAs chapter 1 introduction学习记录
  10. chm文件在服务器看不到内容,电脑不能打开文件secedit.chm怎么办_网站服务器运行维护,电脑...