关于辗转相除法的证明,及进制表示法

辗转相除法(欧几里得算法)深度解析 辗转相除法(Euclidean Algorithm)是求解两个正整数最大公约数(GCD, Greatest Common Divisor)的经典算法。它以简洁的数学原理和高效的计算过程,成为数论算法的基石之一,广泛应用于密码学、代数运算、计算机科学等领域。本文我将从数学原理、算法实现、复杂度分析、应用场景等多个维度,深入解析这一经典算法,结合代码示例与数学证明,带你全面掌握辗转相除法的核心思想。 阅读详情

一.辗转相除法

1.求最大公因子的方法(a,b) = (b,c)称为辗转相除法
  Ⅰ.其中a = qb + c; (a,b)为a,b的最大公因子。
  Ⅱ.简化了求最大公因子的工作量,因为任意整数和0的公因子为其本身。若余数c=0时,b即为最大公因子。

2.辗转相除法的证明:
  Ⅰ.因为(a,b)整除a,(a,b)整除b,根据整除的性质(即a整除b,a整除c,可以得到a整除mb+mc )可以得到(a,b)整除c,所以有(b,c)>=(a,b)(因为(a,b)是c的因子,也是b的因子,所以(b,c)>=(a,c)。)。同理可得c<=(a,b),所以可以得到结果:(a,b) = (b,c)

3.辗转相除法的递归实现


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

二.进制表示法

  Ⅰ.任何整数n都可以表示为a进制:r(t)*a^t + r(t-1)a^(t-1) + … +r1a + r0.
  Ⅱ.证明:对于整数n,可表示为 n = q0 * a + r0。现在将q0分解 q0 = q1 * a + r1。原式等于 n = (q1 * a + r1) * a + r0。递推可得到存在 0 <= q(t-1) < a,使得 q(t-1) = rt。所以可以得到Ⅰ中的式子。

谢谢大家的评论与支持,补充一下ha

3.补充,关于求n个数的最大公因数。

  ①.定理 我们设a1,a2,a3…a(n)为n个整数。令(a1,a2) = d1 ,(d1,a3) = d2 , (d2,a4) = d3 … (d(n-2),a(n)) = d(n-1),则 (a1,a2…an) = d(n-1)。
    i.我的理解:这个定理就是我们求解n个数的最大公因子的办法。简单说假如求3个数的最大公因子,就是求前两个数的最大公因子,接着用这个最大公因子和第三个数求最大公因子,就得出这三个数的最大公因子有点啰嗦了hah。

  ②.证明:
     i.目的:证明d(n-1)等于这n个数的最大公因子,为了方便我们设( a1,a2…,an) = d。即d = d(n-1)
    ii.如何达到目的:我们可以通过证明 d | d(n-1) , d(n-1) | d,来证明d = d(n-1) 。
    iii.开始证明:①.首先证明d | d(n-1) ,因为d为最大公因子 d | ai (1 <= i <= n) ,我们可以发现d1 = xa1 + ya2 (这个是由带余除法推广出来的结论,我就不说了,要不太啰嗦了)所以d | d1 (整除的性质),d2 = xd1 + ya3 ,所以d | d2,依次类推 d | di (1 <= i <= n-1) , 可以得到d | d(n-1)。②.接下来证明d(n-1) | d ,因为(d(n-2) , an) = d(n-1) ,所以d(n-1) | an , d(n-1) | d(n-2) 。接下来看倒数第二项 (d(n-3) , a(n-1)) = d(n-2) ,可以得到d(n-2) | a(n-1) , d(n-2) | d(n-3)。根据整除的传递性,我们可以得到d(n-1) | a(n-1),以此类推我们可以得到d(n-1) | ai (1 <= i <= n-1),所以 d是a1到an的公因子,(n个数的公因子必整除他们的最大公因子,这个通过反证法很容易证明),所以d(n-1) | d。得证!

啊啊啊,开始准备用手机写来着!才发现手机也不是万能的,用手机写博客估计得累死。谢谢大家看完。笔者水平有限,难免有错,还请大家指正。谢谢!

【TSOJ课程】14 1119 确定进制 课程29_14 1119 确定进制 题目: 题目描述: 6 × 9 = 42 对于十进制来说是错误的,但是对于 13 进制来说是正确的。即,6(13) × 9(13) = 42(13), 而 42(13) = 4 × 13 + 2 = 54(10)。 你的任务是写一段程序读入三个整数 p, q 和 r,然后确定一个进制 B (2 <= B <= 16) 使得 p × q = r。... 阅读详情

相关推荐

软件测试--用例篇(测试用例的好处、测试用例的七种设计方法、测试用例的粒度、测试用例的评价)

作为软件测试工程师,最主要的工作就是:编写测试用例,那么为什么要编写测试用例?它有什么好处?如何编写测试用例?测试用例写简单好还是复杂好?如何评价测试用例的质量? 天呐撸!能说不会吗?! 作为倾向软件测试工程师的老铁们,还是一起来学习吧! 一、编写测试用例的好处 测试用例是测试者的依据 测试用例使得工作可重复,是自动化测试的基础 补充:自动化测试的前提条件是:功能比较稳定,页面...

cherrydreamsover的博客 3734

算法模版 辗转相除

算法概述: 设两数为a、b(a>b),用gcd(a,b)表示a,b的最大公约数,r=a (mod b) 为a除以b的余数,k为a除以b的商,即a÷b=k.......r。辗转相除法即是要证明gcd(a,b)=gcd(b,r)。 第一步:令c=gcd(a,b),则设a=mc,b=nc 第二步:根据前提可知r =a-kb=mc-knc=(m-kn)c 第三步:根据第二步结果

xinjiyuan97的博客 584

【QT+PCL】串口读取单线激光雷达数据并在QVtkWidget组件中实时刷新(一)

(本文主要记录开发过程以及遇到的困难及解决方式)

2301_76329543的博客 3065

欧几里得辗转相除法证明及推论

一、辗转相除法定义辗转相除法:以大数除以小数,如果能整除,那么小数就是所求的最大公约数(Greatest CommonDivisor:gcd)。否则就用余数来除刚才的除数;再用这新除法的余数去除刚才的余数。依此类推,直到一个除法能够整除,这时作为除数的数就是所求的最大公约数。即:gcd(x,y)表示x与y的最大公约数,有gcd(x,y)=gcd(y,x%y),如此便可把原问题转化为求两个更小数的公约

麦田里的码农 1万+

PHP+MYSQL宠物主题动态网页设计源码+数据库,大学生期末大作业,PHP课程设计

PHP+MYSQL宠物主题动态网页设计源码+数据库,大学生期末大作业,PHP课程设计提示:本文采用PHP对数据库进行操作:本文就介绍了PHP实现对MySQL数据库的增删改查操作基础内容。

899

从零到一:手把手教你用C#开发AGV调度系统(附避坑指南)

本文详细介绍了如何使用C#开发高效的AGV调度系统,涵盖从环境搭建到核心算法实现的完整流程。重点解析了动态路径规划、多机协同等关键技术,并提供了实用的避坑指南和性能优化建议,帮助开发者快速构建工业级车辆控制调度系统。

blockchain9miner的博客 741

一文看懂什么是欧几里得算法!多图演示辗转相除算法究竟是什么!为什么要这样开展!多图预警!

将抽象的数的问题转换成具体的图形实例上来思考解决。

猪肉炖粉条的博客 1万+

DDSP(Differentiable Digital Signal Processing) 开篇

文章目录DDSP可以用来做什么?下一步工作 工作中接触到了DDSP声码器,但非科班出声的我对这块知识非常陌生,甚至带有一些畏惧的心理,但是为了工作为了进步,必须硬下头皮去啃,相信只要耐心地坚持,没什么能难到我。于是从今天开始,就用这个博客专栏来记录我的学习历程,希望也能帮助到你~ DDSP对应的论文是:DDSP: Differentiable Digital Signal Processing 先翻译一篇来自DDSP论文作者的对DDSP的介绍的文章。 今天,我们很高兴地介绍可微数字信号处理(DDSP)库。

YeeKo的博客 9245

辗转相除法的证明

辗转相除法的证明: 辗转相除法 又叫做「欧几里得算法」,是公元前 300 年左右的希腊数学家欧几里得在他的著作《几何原本》提出的.利用这个方法,可以较快地求出两个自然数的最大公因数,即 HCF 或叫做 gcd.所谓最大公因数,是指几个数的共有的因数之中最大的一个,例如 8 和 12 的最大公因数是 4,记作 gcd(8,12)=4. 在介绍这个方法之前,先说明整除性的一些特点,注以下文...

一个知识混子的博客 5301

修改yolov8使支持单通道图像输入

默认支持BGR三通道图像输入,但是在很多工业场景下,存在很多灰度图像的场景,因此对yolov8代码做一些修改以支持单通道图像输入,满足项目实际需求。训练时,只需要在 data 的 yaml 文件中,添加 ch=1 即可。

mingo_敏 5778

Python爬虫实战【房产刚需专属】:爬取链家/贝壳完整房源数据,精准筛选刚需房源【房价+户型+地段+面积+装修】

本次爬虫的核心亮点就是刚需专属筛选,我已经把刚需买房的主流筛选逻辑封装为独立函数,你只需要修改筛选参数,就能精准匹配你的需求无需懂Python语法,直接改数字/文字即可!本次爬虫是刚需买房+Python爬虫实战的完美结合。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1821

图解辗转相除法(欧几里得算法)求解最大公约/最小公倍数

基本原理:两个整数的最大公约数等于,其中较小的数和两数的差的最大公约数。个人解析:若A、B有最大公约数K(A > B),则,A、B、(A - B)、A mod B(A / B的余数),都是K的倍数。即余数(A - B)和 B 的最大公公约数也是 K。由此递归,可知当 A mod B = 0,即 A 是 B 的倍数时,此时,B 即为 K。实际上,存在如下定理:两数最大公约数与最小公倍数的积等于两数之积,用公式表示就是:当时最大公因数*最小公倍数=pq。

tugouxp的专栏 1万+

卷积神经网络中的自注意力机制(Self-Attention Mechanism)

卷积神经网络中的机制表现为操作,其实现过程与Seq2Seq模型的自注意力机制类似。标准的卷积层是一种局部滤波操作,其输出特征上的任意位置是由对应输入特征的一个邻域构造的,只能捕捉局部特征之间的关系。而自注意力机制通过计算任意两个位置之间的关系直接捕捉远程依赖,而不用局限于相邻点,相当于构造了一个的卷积核,从而可以捕捉更多信息。在卷积网络的自注意力机制中,首先构造输入特征x的键特征fx, 查询特征gx和值特征hx;

AI天才研究院 1498

关于进制转换(2的n次类进制),取余(MOD)的简要讨论

上学期我学习了“计算机组成原理”,在我们书上的例题中,这里用我们使用的教科书《计算机组成原理(第三版)————唐朔飞》第95页 例4.1来举例,其中会用到将十六进制数字转换为二进制数字来求线的位数的操作还有我们常常会接触到各种机器数,原码,补码,反码,移码,校验码等等,其中不乏会用到模(取余)的操作,接下来我将对这两种操作进行如下简要讨论附:本文涉及《计算机组成原理》中的部分知识,在此加入链接《计算机组成原理——详细笔记》供希望进一步了解的同学继续细致学习。

2302_76220607的博客 2540

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

辗转相除法 & 裴蜀定理

2018-03-11 17:39:22 一、辗转相除法 在数学中,辗转相除法,又称欧几里得算法(英语:Euclidean algorithm),是求最大公约数的算法。辗转相除法首次出现于欧几里得的《几何原本》(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的《九章算术》。辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。例如,252和10...

aitie1479的博客 1499

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

京东2017校招笔试编程题2:进制转换、辗转相除法

如下一些内容大部分来自于维基百科: 辗转相除法,又被称为欧几里德(Euclidean)算法, 是求最大公约数的算法。辗转相除法首次出现于欧几里得的《几何原本》(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的《九章算术》。 两个数的最大公约数是指能同时整除它们的最大正整数。辗转相除法的基本原理是:两个数的最大公约数等于它们中较小的数和两数之差的最大公约数。例如,252和10

前端产品工程师 1780

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

python辗转相除法算法_辗转相除法的算法

展开全部自然语言描述用辗转相除法确定两个正整数e69da5e6ba903231313335323631343130323136353331333339666665 a 和 b(a≥b) 的最大公因数gcd(a,b):当a mod b=0 时gcd(a,b)=b,否则gcd(a,b) = gcd(b,a mod b)递归或循环运算得出结果伪代码这个算法可以用递归写成如下:function gcd(a...

weixin_39907850的博客 2332

进制转换,base可能为负数

如果我们不是让余数加上进制的绝对值,而是加上了一个其他的数,此时我们仍然需要通过改动商来维护等价关系(不可能修改进制,修改除数没意义)。)也肯定是个负数,因为我们规定输入的十进制数都是正数,而这里被除数(十进制数)成了负数,说明此时除数肯定是负数。因为让余数加上进制的绝对值就相当于让余数减去进制(前面证明了,进制一定是负数),所以我们需要让商。好了,现在回归正题,我们肯定不能让余数为负数啊,所以我们需要把它转换为非负数。因此,我们还需要修改商,这里,我们只需要让商直接。,这应该不会考到,也不需要用,

jyyyyx的算法之旅 1082

辗转相除法原理(转)

这是百科里给出的证明方法: 设两数为a、b(b<a),用gcd(a,b)表示a,b的最大公约数,r=a mod b 为a除以b以后的余数,k为a除以b的商,即a÷b=k…r。辗转相除法即是要证明gcd(a,b)=gcd(b,r)。 第一步:令c=gcd(a,b),则设a=mc,b=nc 第二步:根据前提可知r =a-kb=mc-knc=(m-kn)c 第三步:根据第二步结果可知c也是r的因数...

qq_45603899的博客 397

c语言辗转相除法素数,C|模数、素数,辗转相除法的证明及求最大公约数和最小公倍数...

1 模数“模”是指一个计量系统的计数范围。如时钟等。计算机也可以看成一个计量机器,它也有一个计量范围,即都存在一个“模”。例如:时钟的计量范围是0~11,模=12。表示n位的计算机计量范围是0~2^(n)-1,模=2^(n)。“模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的余数。任何有模的计量器,均可化减法为加法运算。例如:假设当前时针指向10点,而准确时间...

weixin_39981624的博客 576

最大公约数(gcd)和 最小公倍数(lcm)——辗转相除法

辗转相除法(又称欧几里得算法)是求最大公因数的算法 要求a,b的最大公约数(a>b),我们可以递归地求b,a%b的最大公约数,直到其中一个数变成0,这时另一个数就是a,b的最大公约数。 C++实现: int gcd(int a,int b){   retuen b?gcd(b,a%b):a; } 或: while(b!=0){  temp=a%b;a...

dingcao9109的博客 333

任意进制转换

任意进制转换 题目描述 M和N(2<=M,N<=36)。 下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出。 样例输入 10 2 11 样例输出 1011 提示 注意输入时如有字母,则字母为大写,输出时如有字母,则字母为小写。 实现代码 #include<stdio.h> #include<string.h> int main(void){ int m,n,s1[110]; char s[110],ans[110]; char

沐雨风栉 282

进制转换2

题目描述 将M进制的数X转换为N进制的数输出。 输入 输入的第一行包括两个整数:M和N(2<=M,N<=36)。 下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出。 输出 输出X的N进制表示的数。 样例输入 10 2 11 样例输出 1011 提示 注意输入时如有字母,则字母为大写,输出时如有字母,则字母为小写 举个例子吧 3 2 222 把三进制的222转成2进制 222的10进制是26让它除以2结果是13余数是0 用三进制除以2之后结果是111余数也是0

起名好难呀! 162

用计算机程序求n,辗转相除法在计算机程序设计上的实际应用

摘 要:对辗转相除法在计算机程序设计上的实际应用进行归纳:求最大公约数,求最小公倍数,如何判定二元一次不定方程有无整数解,如何把十进制整数部分转化为R进制。关键词:N-S结构化流程图;PASCAL源程序;辗转相除法;计算机程序设计;实际应用定理1:若A1、A2…An是N个不全为零的整数,则(A1,A2…An)=(|A1|,|A2|…|An|)定理2:若B是任一个正整数,则(0,B)=B推论:若B是...

weixin_39534002的博客 435

C/C++辗转相除法 --- 求两个数的最大公约数和最小公倍数

在数学中,辗转相除法,又称欧几里得算法,是求最大公约数的算法。辗转相除法首次出现于欧几里得的《几何原本》(第VII卷,命题yⅠ和Ⅱ)中,而在中国则可以追溯至东汉出现的《九章算术》。 两个整数的最大公约数是能够同时整除它们的最大的正整数。辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的相除余数的最大公约数。例如,252和105的最大公约数是21(252 = 21 × 12;10

Epic丶玖遇 1万+

辗转相除法求最小公倍数和最大公约数c语言,C/C++辗转相除法 --- 求两个数的最大公约数和最小公倍数...

在数学中,辗转相除法,又称欧几里得算法,是求最大公约数的算法。辗转相除法首次出现于欧几里得的《几何原本》(第VII卷,命题yⅠ和Ⅱ)中,而在中国则可以追溯至东汉出现的《九章算术》。两个整数的最大公约数是能够同时整除它们的最大的正整数。辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的相除余数的最大公约数。例如,252和105的最大公约数是21(252 = 21 × 12;105 ...

weixin_34357232的博客 2101
上一篇: 蓝桥杯字符串问题,小白总结,c++数组初始化,getline用法
下一篇: C++ 反转字符串数组,Reverse函数的使用
unomit
博客等级 码龄7年 30粉丝 110原创
评论 11
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值