一、欧几里德算法

又称辗转相除法,用于计算两个整数a,b的最大公约数。

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

整除:

若整数a除以非零整数b,商为整数,且余数为零,我们就说a能被b整除(或说b能整除a),a为被除数,b为除数,即b|a(“|”是整除符号),读作“b整除a”或“a能被b整除”。a叫做b的倍数,b叫做a的约数(或因数)。

证明(法一):

若a可以表示为a=kb+r,则r=a mod b;

假设d是a,b的一个公约数,则有d|a,d|b,而r=a-kb,因此d|r,因此d是(b,a mod b)的公约数;

假设d是(b,a mod b)的公约数,则d|b,d|r,但是a=kb+r,因此d|a,所以d也是(a,b)的公约数;

因此,(a,b)和(b,a mod b)的公约数是一样的,其最大公约数也必然相等,即gcd(a,b)=gcd(b,r)。

证明(法二):

假设c是a,b的最大公约数,即c=gcd(a,b),则有a=mc,b=nc,其中m,n为正整数,且m,n互为质数;

由r=a mod b可知,r=a-qb,其中q是正整数,则r=a-qb=mc-qnc=(m-qn)c;

b=nc,r=(m-qn)c,且n,m-qn互质

(假设n,m-qn不互质,则n=xd,m-qn=yd,其中x,y,d都是正整数,且d>1,则a=mc=(yd+qn)c=(yd+qxd)c=(qx+y)dc,b=xdc,这时a,b的最大公约数变成dc,与前提矛盾,所以n,m-qn一定互质)

则gcd(b,r)=c=gcd(a,b)

二、扩展欧几里德算法

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

证明:

设a>b

1、当b=0时,gcd(a,b)=a。此时x=1,y=0;

2、ab!=0时,设

a x1+b y1=gcd(a,b);b x2+(a mod b) y2=gcd(b,a mod b);

根据朴素的欧几里德原理有gcd(a,b)=gcd(b,a mod b);

则:a x1+b y1 =b x2+(a mod b)y2;

即:a x1+b y1 =b x2+(a-(a/b)*b)y2=a y2+b x2-(a/b)+b y2;

根据恒定定理得:x1=y2,y1=x2-(a/b)* y2;

这样我们就得到了求解x1,y1的方法:x1,y1的值基于x2,y2。

上面的思想是以递归定义的,因为gcd不断的递归求解一定会有个时候b=0,所以递归可以结束。

欧几里德与扩展欧几里德算法——密码学笔记(五)相关推荐

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

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

  2. 算法学习笔记五:最短路径

    题目描述 卫斯理小说经常提及外星人,比如蓝血人. 在土星星球有很多城市,每个城市之间有一条或多条飞行通道, 但是并不是所有的路都是很安全的,每一条路有一个安全系数 s,s 是在 0和1 间的实数 (包 ...

  3. 算法学习笔记五 斐波那契数列

    斐波那契数列 一.最基本的 所以,只要知道这个数列的前两项,就可以求出之后所有项了. 核心部分(最简单的递推方法,但是范围是n<=48,否则会超时and溢出): #include <cst ...

  4. 【算法学习笔记五】平摊分析

    平摊分析 平摊分析是分析一个操作序列以显示每个操作的平均成本很小的任何策略,即使序列中的单个操作可能很昂贵.不同于平均案例分析:1)不涉及概率;2)保证最坏情况下各操作的平均性能. 三种常见的平摊方法 ...

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

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

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

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

  7. 极客算法训练笔记(六),十大经典排序之希尔排序,快速排序

    目录 抛砖引玉 希尔排序 快速排序 抛砖引玉 十大经典排序算法江山图 十大经典排序算法江山图 排序算法的衡量指标我这里不再重复,上一篇我已经列举分析的很清楚了,但是非常重要,没看到我上一篇的小伙伴墙裂 ...

  8. 集训笔记---扩展欧几里德算法(POJ NO.1061 青蛙的约会 有点烦人小跳蛙gcd)

    又在搬砖,本来以为这是一个追及问题,后来发现数据好像并不是那么个意思,后来把方程列出来,经过一个去模的操作,我们其实可以找到一点线索,那就是,一个经过变形的二元一次方程,那么在这种情况下,就可以利用扩 ...

  9. XD现代密码学大作业-欧几里德及其扩展算法的实现

    西电现代密码学大作业1-欧几里德及其扩展算法的实现 一.实验名称:欧几里德及其扩展算法的实现 二.实验原理:学习及其扩展算法. 三.实验目的: 四.实验内容: 五.实验器材(设备.元器件): 六.实验 ...

最新文章

  1. java右移位_java、、移位操作方法
  2. html div中心显示,html中心div总是在中间,另外两个是动态的
  3. 面试题----几种数组去重方式
  4. 【项目实战课】基于Pytorch的3DCNN视频分类与行为识别实战
  5. streamsets 集成 minio s3测试
  6. ipython notebook 中 wavefile, display, Audio的使用
  7. NHibernate利用Mindscape.NHibernateModelDesigner实现数据库与实体之间的转换及操作
  8. Java中的记录器 - Java日志示例
  9. 【英语学习】【医学】Unit 03 Blood
  10. reinterpret_cast、dynamic_cast、static_cast的使用及注意事项
  11. 常用设计模式的小结和实际中的应用
  12. 视觉培训4 完成手写识别项目
  13. 斗鱼实名认证 mysql_我告诉你斗鱼实名认证怎么取消
  14. null 和 undefined 的区别
  15. DirectSound学习(二)--流式缓冲区
  16. Robot Framework自定义测试库
  17. 重构Java代码的既有设计-影片出租店
  18. html 注销 按钮,用户登录/注销时隐藏/替换菜单项
  19. UnityShader学习教程之<详解uv坐标,c#类似uv坐标的值以及贴图操作>
  20. 富文本编辑器(超简单的)

热门文章

  1. 数据中心自动化及其优势
  2. 机房的未来趋势,互联网数据中心(IDC)行业前景图
  3. 首批49个国家绿色数据中心名单公布
  4. 全志linux led驱动程序,芯灵思Sinlinx A64 linux通过设备树写LED驱动(附参考代码,未测试)...
  5. matlab模拟gpd,如何用ARMA模型预测中国GDP
  6. php源代码压缩,PHP_PHP 源代码压缩小工具,使用方法:(在命令行运行) 复 - phpStudy...
  7. Paper:GPT-3《 Language Models are Few-Shot Learners》的翻译与解读
  8. Dataset之AllstateClaimsSeverity:AllstateClaimsSeverity数据集(Kaggle2016竞赛)的简介、下载、案例应用之详细攻略
  9. ML之SVM:利用SVM算法(超参数组合进行多线程网格搜索+3fCrVa)对20类新闻文本数据集进行分类预测、评估
  10. ML之LoRBaggingRF:依次利用LoR、Bagging、RF算法对泰坦尼克号数据集 (Kaggle经典案例)获救人员进行二分类预测——优化baseline模型