小记

辗转相减算法

两个数辗转相减(每次较大变成它本身减去较小的), 待到两数相同时这个数值就是开始时两个数的 gcd

设有两个数 \(a>b\), 设其 gcd 为 \(g\), 则显然 \(a=x*g>b=y*g\)\(gcd(x,y)=1\)

于是相当于证明两个互质的数辗转相减最终会得到 1。

这个就比较显然, 因为若有数 \(p>q\)\(gcd(p,q)=1\), 那么对于 \(p-q\)\(q\), 若其 gcd 不为 1, 即 \(p-q=x*g\)\(q=y*g\)\(g>1,\quad x,y\ge 1\), 那么 \(p=(p-q)+q = (x+y)*g\), 与 \(gcd(p,q)=1\) 矛盾。所以以两个互质的数开始辗转相减的过程中, gcd 始终为 1, 而每次都是大的减去小的, 所以两个数都始终 \(\ge 1\), 所以最终得到的就是两个 1。

至于辗转相除算法, 实际上就是加速了辗转相减的过程。

裴蜀定理

\(ax+by=gcd(a,b)\) 一定有解。

由于上面的定理, 辗转相减/相除 gcd 不变, 可以容易地得出此定理。(辗转相除+归纳法)

posted @ 2020-12-07 10:43  xwmwr  阅读(74)  评论(0编辑  收藏  举报