欧几里德算法(2015.7.28)

摘要:
给定一个正整数m,如果两个整数a和b满足(a-b),并且可以被m除,即(a b)/m产生一个整数,则称整数a和b与模m一致,该模被记录为→b、 m同余是整数的等价关系——百度百科同余定理欧几里德算法转向除法,也称欧几里德算法,是一种寻找两个正整数的最大公因子的算法。它是已知最古老的算法,可以追溯到3000年前。这个算法可以追溯到中国东汉时期的《九章算术》——百度百科是计算最大公因子的一个简单明了的算法。
 需要知识
同余
数论中的重要概念。给定一个正整数m,如果两个整数a和b满足(a-b)能够整除m,即(a-b)/m得到一个整数,那么就称整数a与b对模m同余,记作a≡b(mod m)。对模m同余是整数的一个等价关系。——百度百科

 关于同余的定理

 
欧几里德算法
辗转相除法, 又名欧几里德算法(Euclidean algorithm)乃求两个正整数最大公因子的算法。它是已知最古老的算法, 其可追溯至3000年前。
这种算法,在中国则可以追溯至东汉出现的《九章算术》。——百度百科
简单明了的最大公因数计算算法。
int gcd(int a,int b){
    return b==0?a:gcd(b,a%b);
}

证明如下

  1. 有整数X,Y。其中,X=a*r,Y=b*r(a,b互质,且r为最大公因数)。有X-Y=(a-b)*r。则,X、Y、X-Y互相间最大公因数相同。
  2. 有整数X,Y。其中,X=a*r+c,Y=b*r+d(r为最大公因数,且c,d小于r)。设e=X%Y,也即(e+d+b*r)*n=a*r+c,有e=a*r+c-d-b*r=(a-b)*r+(c-d),所以X、Y、X%Y互相间最大公因数相同。

免责声明:文章转载自《欧几里德算法(2015.7.28)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇CSS 边框(border)实例SpringDataJPA对数据库的操作的几种方式下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

华为 HG526 破解实录(一)Cfg文件加解密工具

几天前,我去中国电信安装E169软件包,并发送了一个华为HG526无线路由猫和一个中兴xxx网络机顶盒(尚未开始制造麻烦)。当然,无线路由猫一如既往地被阉割了。搜索之后,我开始了我的快攻之旅。1.打开catdrop管理页面,使用telecomadmin和nE7jA%5m登录;2.将U盘插入猫。3.开放式管理=˃设备管理、备份配置。4.打开U盘,放下ctce8...

IntelliJ IDEA(2017)安装和破解

IDEA全称IntelliJIDEA,是Java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、各类版本工具、JUnit、CVS整合、代码分析、创新的GUI设计等方面的功能可以说是超常的。用记事本打开分别在最下面一行增加一行:-javaagent:D:IDEAinJetbra...

【工具技巧】:sublime notepad++ 多行编辑

将光标定位到一行-˃ctrl+shift+↑↓, 上下移动一行。选择-˃ctrl+shift后+↑↓, 上下移动所选区域。再次按6:Ctrl+Shift+Enter在光标前插入一行。...

WPF绑定功能常用属性介绍

这是实质上是System.Windows.Data.BindingMode.OneWay绑定的一种简化形式,它在源值不更改的情况下提供更好的性能。确定依赖属性绑定在默认情况下是单向还是双向的编程方法是:使用System.Windows.DependencyProperty.GetMetadata获取属性的属性元数据,然后检查System.Windows.Fr...

记一次Arcgis Server10.2许可过期导致发布图层失败

1.今天,当使用arcmap将地图服务发布到arcgisserver时,发布突然失败。在arcgisserver的管理页面的日志选项中发现错误:未能初始化服务器对象“System/PublicingTools”:0x80004005:错误:(-8003)YourArcGISServerlicense已过期。2.然后在服务器路径中查找文件:...

winform窗体(六)——DataGridView控件及通过此控件中实现增删改查

“,”Delete Data“,btn)==DialogResult.Yes){}V.多条件查询。如果用户没有输入任何内容或文本框为空,则查询所有内容。//设置两个常量条件stringtj1=”1=1“;stringtj2=”1=1”;//根据用户的输入更改条件。//如果用户输入名称If(name!=”“){tj1=“Namelike@name“;}//如果...