欧几里德算法 扩展欧几里德算法 求解丢番图方程
欧几里德算法
即辗转相除法,计算整数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;
}
扩展欧几里德算法求解丢番图方程
参考链接http://www.cnblogs.com/frog112111/archive/2012/08/19/2646012.html
欧几里德算法 扩展欧几里德算法 求解丢番图方程相关推荐
- 欧几里德与扩展欧几里德算法——密码学笔记(五)
一.欧几里德算法 又称辗转相除法,用于计算两个整数a,b的最大公约数. 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd(b,a% ...
- 欧几里德算法 扩展欧几里德算法
欧几里德算法 欧几里德算法又称辗转相除法,是指用于计算两个正整数a,b的最大公约数. 计算公式:gcd(a,b) = gcd(b,a mod b). 算法实现: public static int g ...
- 欧几里德和扩展欧几里德算法
1.欧几里德算法 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数.其计算原理依赖于下面的定理: 定理:gcd(a,b) = gcd(b,a mod b) 证明:a可以表示成a = kb ...
- 扩展欧几里得算法 求解 丢番图方程
丢番图方程: 有一个或者几个变量的整系数方程,它们的求解仅仅在整数范围内进行. a * x + b * y = c ( 其中所有数均为整数, 已知 x, y, c ) 例如:鸡兔同笼问 ...
- (扩展欧几里德算法)zzuoj 10402: C.机器人
10402: C.机器人 Description Dr. Kong 设计的机器人卡尔非常活泼,既能原地蹦,又能跳远.由于受软硬件设计所限,机器人卡尔只能定点跳远.若机器人站在(X,Y)位置,它可以原地 ...
- 欧几里德 扩展欧几里德
目录 欧几里德算法 扩展欧几里德算法 扩展欧几里德算法的主要应用 (1)使用扩展欧几里德算法解决不定方程: (2)用扩展欧几里德算法求解模线性方程的方法: (3)用欧几里德算法求模的逆元: 欧几里德算 ...
- 欧几里德与拓展欧几里德定理
一.欧几里德定理 欧几里德定理就是辗转相除法的原理,用来求两个整数的最大公约数gcd(a, b). 推理过程: 辗转相除法是由辗转相减法而来的,如果a和b(假设a>b)的最大公约数是k,那么可以 ...
- 扩展欧几里德算法详解
转自:http://blog.csdn.net/zhjchengfeng5/article/details/7786595 扩展欧几里德算法 谁是欧几里德?自己百度去 先介绍什么叫做欧几里德算法 有两 ...
- poj 2115 C Looooops(扩展欧几里德算法)
题意: 对于for(i=A ; i!=B ;i+=C)循环语句,问在k位存储系统中循环几次才会结束. 比如:当k=4时,存储的数 i 在0-15之间循环.(本题默认为无符号) 若在有限次内结束,则输出 ...
最新文章
- iOS 开发笔记 cocoapods 配置遇到的问题
- 2017-2018-1 20155336 《信息安全系统设计基础》加分作业:实现mypwd
- NDK 与 JNI 的关系
- ML之DR之SVD:SVD算法相关论文、算法过程、代码实现、案例应用之详细攻略
- 密码学专题 数据填充的方式|序列加密的方式
- mybatis-config.xml常用的配置信息
- 当点击ListView的列头时,对ListView排序
- mysql fetch field_PHP mysql_fetch_field() 函数
- httplib模块,测试cdn节点文件同步
- 先有本地代码,后有远程仓库
- 批量调取接口_批量操作_API 文档_对象存储 - 七牛开发者中心
- tornado(五)
- WIN10重新下载安装MicroSoft Store的三种方法
- 计算机主板 华硕 游戏用,DIY电脑的基石,华硕TUF B360M-PLUS GAMING S游戏主板
- 台式计算机睡眠了怎么唤醒,分享大家几种电脑深度睡眠怎么唤醒方法
- [ARC086]F - Shift and Decrement 位运算+数论+DP
- sql中的iif语句详解
- 冰冻三尺非一日之寒-自学篇 浅谈个人学习方法
- 众安在线2018半年报:亏损6.668亿元,综合成本率高达124.0%
- 计算机原理与应用 第二章——ARM处理器
热门文章
- MOS管做二极管使用
- ready与onload的区别
- dell服务器硬件检测cable,DELL服务器硬件报错解决方法——错误代码寄解决和处理办法...
- bitcoin core全节点钱包同步太慢的解决方法及钱包数据文件移动的方法
- kubeadm安装配置指南
- WARNING: The repository located at mirrors.aliyun.com is not a trusted or secure host and is being i
- 录音转文字软件哪个好?推荐这三款软件给你
- 王峰五小时对话冯波:如果今天没有区块链,你会做什么?
- 钉钉机器人关键词应答_Gmail 邮件推送到钉钉群机器人(详细)教程|国内接收 Gmail 邮件...
- 各大IT公司 技术博客汇总