我恨数论

因为打这篇的时候以为a|b是a是b的倍数,但是懒得改了,索性定义 a|b 为 a是b的倍数

咳咳,那么进入正题,如何证明gcd,也就是 gcd(a,b) = gcd(b,a%b)?

首先,设

p = a/b,c = a mod b

则a = p*b + c

m = gcd(a,b),n = gcd(b,c)

因为m = gcd(a,b),所以 a | m 且 b | m

因为 b | m

所以 b * p | m                //  a|b,则a*k|b (k为整数)

因为a | m

所以a - b * p | m           //   a|b,则k*b - a | b (k为整数)

因为 a = p*b + c

所以 c = a - p*b

所以 c | m

因为c | m,且b | m

所以m为 c,b的公约数

因为n为 c,b的最大公约数

所以m <= n

因为n = gcd(b,c)

所以 b | n , c | n

因为 b | n

所以 b * p | n

因为 c | n

所以 b * p + c | n

因为 a = b * p + c

所以a | n

因为a | n,且 b | n

则n为a,b的公约数

因为m为a,b的最大公约数

所以 n <= m

因为m <= n

所以m = n

所以gcd(a,b) = gcd(b,c)

所以gcd(a,b) = gcd(b,a%b)

整体思路是:

先设出一个关系,然后通过关系证明它们的另一个关系

从gcd(a,b)转换得到b,c是公约数关系,

从gcd(b,c)转换得到a,b是公约数关系,

分别得到它们的大小关系,最后求公共解集,得到两个gcd相等

然后把c带上去,得到我们要证的式子

证完了gcd,下面可以证exgcd

exgcd 可以求

ax + by = gcd(a,b) 中的x,y

那么,我们设

ax1 + by1 = gcd(a,b)

由gcd得出

ax1 + by1 = gcd(b,a mod b)

设bx2 + a mod b y2 = gcd(b,a mod b)

下面用x2开始化简:

gcd(b, a mod b) = b * x2 + a mod b *y2

gcd(b, a mod b) = b * x2 + (a - floor(a/b) * b) * y2

gcd(b, a mod b) = b * x2 + a * y2 - floor(a/b) * b * y2

gcd(b, a mod b) = a * y2 + b * x2 - floor(a/b) * b * y2

gcd(b, a mod b) = a * y2 + b * (x2 - floor(a/b) * y2)

所以

ax1 + by1 = gcd(b, a mod b) = bx2 + a mod b y2 = a * y2 + b * (x2 - floor(a/b) * y2)

所以第一个式子与最后一个式子等量代换得到

x1 = y2

y1 = x2 - floor(a/b) * y2

然后可以通过以上等价式子写出递归,得到x1、y1。

【数论】如何证明gcd/exgcd的更多相关文章

  1. 数论入门2——gcd,lcm,exGCD,欧拉定理,乘法逆元,(ex)CRT,(ex)BSGS,(ex)Lucas,原根,Miller-Rabin,Pollard-Rho

    数论入门2 另一种类型的数论... GCD,LCM 定义\(gcd(a,b)\)为a和b的最大公约数,\(lcm(a,b)\)为a和b的最小公倍数,则有: 将a和b分解质因数为\(a=p1^{a1}p ...

  2. gcd, exgcd的证明

  3. Gcd&Exgcd算法学习小记

    Preface 对于许多数论问题,都需要涉及到Gcd,求解Gcd,常常使用欧几里得算法,以前也只是背下来,没有真正了解并证明过. 对于许多求解问题,可以列出贝祖方程:ax+by=Gcd(a,b),用E ...

  4. 简单数论总结1——gcd与lcm

    并不重要的前言 最近学习了一些数论知识,但是自己都不懂自己到底学了些什么qwq,在这里把知识一并总结起来. 也不是很难的gcd和lcm 显而易见的结论: 为什么呢? 根据唯一分解定理: a和b都可被分 ...

  5. gcd&&exgcd&&斐蜀定理

    gcd就是求a和b最大公约数,一般方法就是递推.不多说,上代码. 一.迭代法 int gcd(int m, int n) { ) { int c = n % m; n = m; m = c; } re ...

  6. Gcd&Exgcd

    欧几里得算法: \[gcd(a,b)=gcd(b,a\bmod b)\] 证明: 显然(大雾) 扩展欧几里得及证明: 为解决一个形如 \[ax+by=c\] 的方程. 根据裴蜀定理,当且仅当 \[gc ...

  7. 【数论】二进制GCD

    二进制GCD     GCD这种通用的算法相信每个OLER都会 ,辗转相除,代码只有四行 : int GCD(int a,int b){ if(b==0) return a; return GCD(b ...

  8. 约数,gcd,exgcd.

    很多题都是要求出什么最大公约数或者最小公倍数什么的,也有一些题目是和约数个数有关的,所以需要总结一下. 首先最大公约数和最小公倍数怎么求呢? 当然是观察法了,对于一些很聪明的孩纸他们一般随便一看就秒出 ...

  9. 算法马拉松35 E 数论只会Gcd - 类欧几里得 - Stern-Brocot Tree - 莫比乌斯反演

    题目传送门 传送门 这个官方题解除了讲了个结论,感觉啥都没说,不知道是因为我太菜了,还是因为它真的啥都没说. 如果 $x \geqslant y$,显然 gcd(x, y) 只会被调用一次. 否则考虑 ...

随机推荐

  1. leyou_04_vue.js的ajax请求方式

    1.异步查询数据,自然是通过ajax查询,大家首先想起的肯定是jQuery.但jQuery与MVVM的思想不吻合,而且ajax只是jQuery的一小部分.因此不可能为了发起ajax请求而去引用这么大的 ...

  2. React State&生命周期

    State&生命周期 State&生命周期 到目前为止我们只学习了一种方法来更新UI. 我们调用ReactDOM.render()来改变输出: function tick(){ con ...

  3. qq音乐网站页面切换歌手分类时不刷新

    1.提交表单时会自动刷新页面(提交表单一般使用post方式提交) 2.动态加载数据时页面不会刷新,只是把页面中某个位置的内容替换掉想要的内容 3.一般在切换到不同的html页面时才会强制让你把页面刷新 ...

  4. PAT甲级——A1027 Colors in Mars

    People in Mars represent the colors in their computers in a similar way as the Earth people. That is ...

  5. apt-get正在等待报头(waiting for headers)

    可能的解决方法 1. 删除/var/cache/apt/archives/下的所有文件.可能是上次没有成功导致遗留了部分文件. 2. 如果使用的是代理,需要检查DNS.如果机器不能连接DNS服务器,要 ...

  6. 【DM642学习笔记五】FVID驱动模型 API函数

    1.FVID_control 作用:发送一个控制命令到mini_driver 语法: status = FVID_control(fvidChan, cmd, args); 参数: FVID_Hand ...

  7. 《DSP using MATLAB》Problem 7.29

    代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...

  8. Docker(二)安装及常用命令

    1.安装 1.安装虚拟机VMWare 链接:https://pan.baidu.com/s/1Xl7ENUm2gapPOFs-iXHpRQ 提取码:eubm 2.下载centos,我下的是这个版本的 ...

  9. dl, dt, dd /line-height /loat /vertical-align 问题

    刚刚在看张鑫旭大神的个人网站,看到一篇关于“css瓶颈”的深度好文,地址为:http://www.zhangxinxu.com/wordpress/?p=2523 关于张大神在文章里面提到的四个问题: ...

  10. Mysql指定服务器访问

    [root@test ~]# ls[root@test ~]# mysql -u root -pEnter password: Welcome to the MySQL monitor. Comman ...