一.欧几里得定理(辗转相除法)

性质:如果 i 能整除a,也能整除b,则 i 能整除a+b,也能整除ax+by(x,y为整数),同时a mod b = a-(a/b)*b
用以上的性质我们知道如果一个 i 能整除a和b,那么它也能整除 a-(a/b)*b,因此
(a,b)的最大公约数等于(b,a-(a/b)*b)的最大公约数,也就是(b,a mod b)的最大公约数。

int gcd(int a,int b){b ? gcd(b,a%b):a;
}

二.扩展欧几里得定理

能够在求a和b的最大公约数的同时求出x和y的值。
裴蜀定理:指的是对于任意整数a,b,一定至少存在一对整数x,y,使ax+by = gcd(a,b)(最大公约数),这里的x,y为任意整数。
即a和b能凑出来的最小正整数为a和b的最小公约数
我们来分情况讨论:

(1)当b==0时

此时a和b的最大公约数为a,则x==1;

(2)当b!=0时

ax+by = gcd(a,b);
by+(a mod b)x = gcd(a,b)(这两个的最大公约数相同)
by+(a-(a/b)*b)x = gcd(a,b);
ax+b(y-(a/b)*x) = gcd(a,b);
也就是每递归调用一次x不用改变,y->y-(a/b)*x即可

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

数学基础知识(扩展欧几里得定理)相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

  7. 扩展欧几里得定理 新手向证明及代码

    知识储备 1 . 朴素欧几里得原理:gcd(a,b) == gcd(b,a % b) 2 . 负数取模:忽略符号返回绝对值就好了 3 . 模数原理:对于整数a,b必然存在整数k使得a % b == a ...

  8. 对扩展欧几里得定理理解+证明

    原文出处: https://blog.csdn.net/Floatiy/article/details/80452643 知识储备 1 . 朴素欧几里得原理:gcd(a,b) == gcd(b,a % ...

  9. 扩展欧几里得定理基础讲解 代码及证明

    知识储备 1 . 朴素欧几里得原理:gcd(a,b) == gcd(b,a % b) 2 . 负数取模:忽略符号返回绝对值就好了 3 . 模数原理:对于整数a,b必然存在整数k使得a % b == a ...

最新文章

  1. 随手记:IDAPro蛮强大
  2. iOS自动打包并发布脚本
  3. 原生js来实现对dom元素class的操作方法
  4. oracle rollup分组没有数据时为0_数据库周刊19│GBASE适配鲲鹏;MySQL窗口函数;OGG双向数据同步……...
  5. 计算机软件专业代码表,2019-04-09 计算机软件适用的国民经济行业代码表
  6. [0]Android框架揭秘-概论
  7. python批量将word转换成pdf_python批量实现Word文件转换为PDF文件
  8. 区块链清明上河图 2018Q3
  9. Host是什么?如何设置host文件?
  10. SQL查询实现差集(补集)运算
  11. 解决笔记本更换固态硬盘,将机械盘放置光驱位后,机械盘休眠导致卡顿问题
  12. 数据传输完整性_数据集成:什么是数据完整性?
  13. 大型网站技术架构-核心原理与案例分(李智慧 著)第1章-大型网站架构演化
  14. Vuejs 的入门(笔记)
  15. python - TypeError: combat(sume,sumu) missing 2 required positional arguments: sume,sumu
  16. 2005国内IC Design House一览
  17. 嵌入式软件测试——1.简介
  18. 怎么将webm文件转换成MP4格式在手机上播放
  19. TDengine极简实战:从采集到入库,从前端到后端,体验物联网设备数据流转
  20. 学习计算机的英语口语,最实用的英语口语学习技巧

热门文章

  1. 什么是框架,框架的作用是什么?
  2. 编写一个随机抽奖程序php,基于PHP实现简单的随机抽奖小程序
  3. 自然语言中corpora.Dictionary的理解
  4. 6 个超酷的学习算法网站,Leetcode 不是第一 ?
  5. 10+编程语言实现云笔记
  6. mysql icp(Index Condition Pushdown) using index condition
  7. 维度数据建模的概念和术语
  8. 用 Python 创作酷炫的几何图形
  9. 汽车鸿蒙音响怎么调,汽车音响怎么调试 汽车音响调试步骤方法【详细介绍】...
  10. java 静态导入_JAVA静态导入(import static)详解