本章节不以理解算法为目的,更注重于使用。

首先需要了解扩展欧几里得的算法
———找出一对(x,y),使得其能满足ax+by=gcd(a,b)这一式子。
下面给出实现此算法的代码

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

通过代码我们就可以找到一组(x,y)解。

假设另外一组解为(x1,y1),与原式联立,就可以得到a(x-x1)=b(y1-y),两边同时除以gcd(a,b),得到a’(x-x1)=b’(y1-y),a’=a/gcd(a,b),b’=b/gcd(a,b),此时a’与b’肯定互质,所以若假设(x-x1)=kb’,则易推出(y1-y)=ka’,根据式子就可以得到其他任意两组解,x1=x+kb’,y1=y-ka’,(x1=x-kb’,y1=y+ka’,两者同等)。

结论,x’=x+kb’,y’=y-ka’ ( a’=a/gcd(a,b),b’=b/gcd(a,b) )。

此时,对于ax+by+c=0求解的问题,就可以用该结论解决。
先找到ax+by=gcd(a,b)的解x1,y1,此时对于ax+by=-c。
将ax1+by1=gcd(a,b)两边同时乘以c/gcd(a,b),即可得到解x=x1c/gcd(a,b),y=y1c/gcd(a,b)。

【数论初步学习】扩展欧几里得定理相关推荐

  1. 专题·扩展欧几里得定理【including 求解二元一次方程,线性同余方程

    初见安~这里是基础数论专题(3)~[详见数论专栏] p.s:本文章假设你已经掌握了欧几里得算法--辗转相除法求最大公约数(gcd) 一.二元一次方程 形如的含有两个未知数且最高次数为1的方程我们称之为 ...

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

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

  3. 数学基础知识(扩展欧几里得定理)

    一.欧几里得定理(辗转相除法) 性质:如果 i 能整除a,也能整除b,则 i 能整除a+b,也能整除ax+by(x,y为整数),同时a mod b = a-(a/b)*b 用以上的性质我们知道如果一个 ...

  4. 扩展欧几里得定理求ax + by = c 的通解

    扩展欧几里得定理求ax + by = c 的通解: 前置条件: ax + by = c , gcd(a, b) = d 计算: a d \frac{a}{d} da​x + b d \frac{b}{ ...

  5. 扩展欧几里得定理详解和运用(就不信你看不懂!)

    1 :扩展欧几里得内容: 扩展欧几里德算法是用来在已知a, b求解一组x,y使得ax+by =c.(若 c%gcd(a,b)!=0)则无解 所以 我们求ax+by=c是不是可以转化为求 ax+by=k ...

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

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

  7. 浅谈扩展欧几里得定理(附裴蜀定理)

    关于扩展欧几里得定理 众所周知,扩展欧几里得定理是用来求形如(a,b,c皆为整数)这样的方程的一组解[注,仅是一组解]的定理 它的原理比较复杂,本人学了挺久才懂了一点,这里就不谈了,扩欧的核心是它的思 ...

  8. 数论基础(1)扩展欧几里得定理

    一.引言 扩欧在朴素欧几里得定理中扩展得到,主要用于解决什么问题? 1.求两个数的最大公约数(朴素欧也可以解决这个问题) 2.ax+by=gcd(a,b),求解这个线性不定方程的一组特解. (补充:贝 ...

  9. gcd + 扩展欧几里得定理+递推乘法逆元(模板)

    gcd: int gcd(int a, int b){ return b==0? a: gcd(b, a%b); } 扩张欧几里得定理: 扩展欧几里德算法是用来在已知a, b求解一组x,y使得ax+b ...

最新文章

  1. 对输入框进行探索性测试思路
  2. Extjs TextField扩展
  3. php接收不到post数据_PHP解决Vue发起POST请求,接收不到数据
  4. Linux中的docker login 与docker logout 命令
  5. 一种可以解决python读取文件中文出乱码的方法
  6. 遍历frame中的表单:
  7. 学术研究 | 仅仅因为方法 Too Simple 就被拒稿,合理吗?
  8. Python内置函数(66)——vars
  9. rhel linux 自动 fsck,red hat as 4 启动报错:checking filesystems fsck.ext3: bad magic number ......
  10. c java string转int_jni java和C之间的值传递(int String int[])
  11. SpringBoot整合JavaMail---发送邮件
  12. 一个轻量级多功能免费开源web聊天室
  13. CDRX4X5X6X7X8下载安装失败的原因教程分享(CorelDRAW)
  14. C#中的线程池使用方法
  15. android 蓝牙BluetoothAdapter的介绍
  16. jmeter监听器---jp@gc - PerfMon Metrics Collector
  17. lda主题模型的可视化_Gensim LDA主题模型实验
  18. 黑苹果安装教程OC引导
  19. Voyager的Roles和Pemissions
  20. 增值电信业务许可证办理,全攻略来了

热门文章

  1. ctfshow-web爆破(web21-28)
  2. C#/.NET/.NET Core优秀项目框架推荐
  3. SpringBoot+webSocket+echarts K线图(自动更新)
  4. CVPR2018 微表情识别ELRCN 论文笔记
  5. Scala 自身类型(self-type) 解析
  6. YOLOV5超参数设置与数据增强解析
  7. java 数组批量赋值_JAVA中数组赋值问题
  8. uniapp利用uview2.0中的uploadFile组件实现多张图片的增删预览上传功能
  9. 【推荐系统->相似度】Cos相似度与皮尔逊相似度及其关联
  10. vue-qr二维码插件,vue 生成二维码