欧几里德算法

即辗转相除法,计算整数A, B最大公约数。

基本算法:设 a = kb + r,其中a,b,k,r都是整数,则 gcd(a,b) = gcd(b,r),即 gcd(a,b) = gcd(b,a%b) 。

证明:

a = kb + r;  则r = a%b ;
    设m为 a , b 的一个公约数,则 m|a , m|b,而 r = a - kb; 所以 m|r (注:m整除r,r能被m整除),因此m也是 (b , a%b) 的公约数;
    设m为 b , r 的一个公约数,则 m|b , m|r,而 a = r + kb; 所以 m|a ,因此m也是 (a , b) 的公约数;
    因此 (b , a%b) 与 (a , b) 公约数相同,最大公约数也一定相同,得证。

算法的C语言实现:

int gcd(int a,int b)
{if(b==0)return a;return gcd(b, a%b);
}

扩展欧几里德算法

基本算法:对于不完全为 0 的非负整数 a,b,必然存在整数对 x,y ,使得 ax + by = gcd(a,b)  。

证明:

前文得证 gcd(a,b) = gcd(b, a%b) ;
    所以 ax + by = bx1 + a%by1 ;
    化简得 ax + by = ay1 + b(x1 - (a/b)*y1) ;
    得到:x = y1 ; y = b(x1 - (a/b)*y1) ;
    递归的最终停止结果为 a = gcd( a , b) , b = 0 , 此时 x = 1 , y = 0 ;

扩展欧几里德递归代码实现:

int exgcd(int a,int b,int &x,int &y)
{if(b == 0){x = 1;y = 0;return a;}int r = exgcd(b,a%b,x,y);int temp = x;x = y;y = temp-a/b*y;return r;
}

扩展欧几里德算法求解丢番图方程

    用扩展欧几里德算法求解丢番图方程 ax + by = c ,  系数 a, b, c 为任意整数。
    丢番图方程有解的充要条件为 c % gcd( a , b ) == 0 。 
由前一章节可知 ax + by = gcd(a,b) 存在整数解, 因此 c % gcd( a , b ) == 0 为丢番图方程有解的充分条件(为什么是必要条件还不清楚?)
代码实现的话与扩展欧几里德算法基本相同, 不同的地方就是最后的结果 x和y 要乘上倍数 c / gcd ( a, b) 。
 
    

参考链接http://www.cnblogs.com/frog112111/archive/2012/08/19/2646012.html

欧几里德算法 扩展欧几里德算法 求解丢番图方程相关推荐

  1. 欧几里德与扩展欧几里德算法——密码学笔记(五)

    一.欧几里德算法 又称辗转相除法,用于计算两个整数a,b的最大公约数. 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd(b,a% ...

  2. 欧几里德算法 扩展欧几里德算法

    欧几里德算法 欧几里德算法又称辗转相除法,是指用于计算两个正整数a,b的最大公约数. 计算公式:gcd(a,b) = gcd(b,a mod b). 算法实现: public static int g ...

  3. 欧几里德和扩展欧几里德算法

    1.欧几里德算法 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数.其计算原理依赖于下面的定理: 定理:gcd(a,b) = gcd(b,a mod b) 证明:a可以表示成a = kb ...

  4. 扩展欧几里得算法 求解 丢番图方程

    丢番图方程: 有一个或者几个变量的整系数方程,它们的求解仅仅在整数范围内进行. a * x + b * y = c  ( 其中所有数均为整数, 已知 x, y, c )        例如:鸡兔同笼问 ...

  5. (扩展欧几里德算法)zzuoj 10402: C.机器人

    10402: C.机器人 Description Dr. Kong 设计的机器人卡尔非常活泼,既能原地蹦,又能跳远.由于受软硬件设计所限,机器人卡尔只能定点跳远.若机器人站在(X,Y)位置,它可以原地 ...

  6. 欧几里德 扩展欧几里德

    目录 欧几里德算法 扩展欧几里德算法 扩展欧几里德算法的主要应用 (1)使用扩展欧几里德算法解决不定方程: (2)用扩展欧几里德算法求解模线性方程的方法: (3)用欧几里德算法求模的逆元: 欧几里德算 ...

  7. 欧几里德与拓展欧几里德定理

    一.欧几里德定理 欧几里德定理就是辗转相除法的原理,用来求两个整数的最大公约数gcd(a, b). 推理过程: 辗转相除法是由辗转相减法而来的,如果a和b(假设a>b)的最大公约数是k,那么可以 ...

  8. 扩展欧几里德算法详解

    转自:http://blog.csdn.net/zhjchengfeng5/article/details/7786595 扩展欧几里德算法 谁是欧几里德?自己百度去 先介绍什么叫做欧几里德算法 有两 ...

  9. poj 2115 C Looooops(扩展欧几里德算法)

    题意: 对于for(i=A ; i!=B ;i+=C)循环语句,问在k位存储系统中循环几次才会结束. 比如:当k=4时,存储的数 i 在0-15之间循环.(本题默认为无符号) 若在有限次内结束,则输出 ...

最新文章

  1. iOS 开发笔记 cocoapods 配置遇到的问题
  2. 2017-2018-1 20155336 《信息安全系统设计基础》加分作业:实现mypwd
  3. NDK 与 JNI 的关系
  4. ML之DR之SVD:SVD算法相关论文、算法过程、代码实现、案例应用之详细攻略
  5. 密码学专题 数据填充的方式|序列加密的方式
  6. mybatis-config.xml常用的配置信息
  7. 当点击ListView的列头时,对ListView排序
  8. mysql fetch field_PHP mysql_fetch_field() 函数
  9. httplib模块,测试cdn节点文件同步
  10. 先有本地代码,后有远程仓库
  11. 批量调取接口_批量操作_API 文档_对象存储 - 七牛开发者中心
  12. tornado(五)
  13. WIN10重新下载安装MicroSoft Store的三种方法
  14. 计算机主板 华硕 游戏用,DIY电脑的基石,华硕TUF B360M-PLUS GAMING S游戏主板
  15. 台式计算机睡眠了怎么唤醒,分享大家几种电脑深度睡眠怎么唤醒方法
  16. [ARC086]F - Shift and Decrement 位运算+数论+DP
  17. sql中的iif语句详解
  18. 冰冻三尺非一日之寒-自学篇 浅谈个人学习方法
  19. 众安在线2018半年报:亏损6.668亿元,综合成本率高达124.0%
  20. 计算机原理与应用 第二章——ARM处理器

热门文章

  1. MOS管做二极管使用
  2. ready与onload的区别
  3. dell服务器硬件检测cable,DELL服务器硬件报错解决方法——错误代码寄解决和处理办法...
  4. bitcoin core全节点钱包同步太慢的解决方法及钱包数据文件移动的方法
  5. kubeadm安装配置指南
  6. WARNING: The repository located at mirrors.aliyun.com is not a trusted or secure host and is being i
  7. 录音转文字软件哪个好?推荐这三款软件给你
  8. 王峰五小时对话冯波:如果今天没有区块链,你会做什么?
  9. 钉钉机器人关键词应答_Gmail 邮件推送到钉钉群机器人(详细)教程|国内接收 Gmail 邮件...
  10. 各大IT公司 技术博客汇总