转:蓝魔之泪de万事屋百度博客

http://hi.baidu.com/didihl/blog/item/533b1fec7cea252063d09f82.html

辗转相除算法的简介

在数论中,辗转相除法(国际上一般称为Euclidean Algorithm 或

Euclid's Algorithm,即欧几里得算法)是一种求任意两个欧几里得环(Euclidean

Domain)中的单位(如:整数)的最大公约数的算法。这个算法的一个重要特点就是其不需要通过分解因式来求取最大公约数。辗转相除法正因为其易操作性与易实现性而成为了计算机编程中的一个重要的求最大公约数的常用算法。

辗转相除法的过程描述与应用

给出两个自然数 a和 b:检查 b 是否为0;如果是,则 a 为最大公约数。如果不是,则分别用 b 和 a除 b 的余数作为上一步中的a和b 重复这一检查步骤。

正如上面所提到的,辗转相除法是编程中求最大公约数的常用算法,那么下面就是一个C++中通过递归实现辗转相除法的程序段范例:

int gcd (int v1, int v2)

{

return ( b == 0 ?a :gcd(b,a % b

);

}

注:过程名设为 gcd 是为了更明显的标明这段程序的意图。因为 gcd是 greatest

common

divisor(最大公约数)的缩写。再编写辗转相除法求最大公约数的过程是,最好将其命名为 gcd以方便他人日后阅读。

辗转相除法的证明

设两数为a、b(b<a),求它们最大公约数的步骤如下:用b除a,得a=bq+r(0≤r<b)(q是这个除法的商)。若r=0,则b是a和b的最大公约数。若r≠0,则继续考虑。

首先,应该明白的一点是任何 a 和 b 的公约数都是 r

的公约数。要想证明这一点,就要考虑把 r 写成 r=a-bq。现在,如果 a 和 b 有一个公约数 d,而且设 a=sd ,

b=td, 那么 r = sd-tdq = (s-tq)d。因为这个式子中,所有的数(包括 s-tq )都为整数,所以 r 可以被 d

整除。

对于所有的 d 的值,这都是正确的;所以 a 和 b 的最大公约数也是 b 和 r

的最大公约数。因此我们可以继续对 b 和 r 进行上述取余的运算。这个过程在有限的重复后,可以最终得到 r=0 的结果,我们也就得到了

a 和 b 的最大公约数。

此法不完备:还需

第四步:可以断定m-kn与n互素【否则,可设m-kn=xd,n=yd,(d>1),则m=kn+xd=kyd+xd=(ky+x)d,则a=mc=(ky+x)dc,b=nc=ycd,故a与b最大公约数成为cd,而非c】

最大公倍数:x*y/r

参考资料:

3.http://hi.baidu.com/didihl/blog/item/533b1fec7cea252063d09f82.html

4.百度百科:http://baike.baidu.com/view/255668.htm#2

php最大公约数辗转相除程序,[转]辗转相除求最大公约数相关推荐

  1. PYTHON语言编写求最大公约数和最小公倍数的程序(更相减损法)

    #更相减损术求GCD.py x,y=eval(input("请输入一个整数:")) t1,t2=x,y while True:a=abs(x-y)if a==min(x,y):br ...

  2. 最大公约数程序c语言,C语言求最大公约数(两种最简单的算法实现)

    第一种:用较小数的最大约数于较大数作求模元算 #include /* 求两个数的最大公约数 */ int main(){ int a,b,max,min,i,result; scanf("% ...

  3. C语言求最大公约数的三种方法

    最大公约数是两个数可以同时整除的数中最大的那个 这里用三种方法来解决 穷举法求最大公约数 判断x和y的最大公约数,x和y其中一定有一个相对较小的数,然后从这个较小数开始遍历,不断地用x和y去除这个数, ...

  4. C语言求最大公约数3种方法

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105163610 C ...

  5. c语言实现求最大公约数的三种方法

    一.最大公约数 最大公因数,也称最大公约数.最大公因子,指两个或多个整数共有约数中最大的一个.a,b的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大公约数也 ...

  6. Java实现欧几里得法求最大公约数GCD

    1.求最大公约数 文章目录 1.求最大公约数 (1)穷举算法1 (2)穷举算法2 (3)穷举算法3 (4)欧几里得算法 (1)穷举算法1 package com.java;//课本程序清单5-9,利用 ...

  7. 欧几里得算法求最大公约数python,算法:欧几里得求最大公约数(python版)

    #欧几里得求最大公约数 #!/usr/bin/env python #coding -*- utf:8 -*- #iteration def gcd(a,b): if b==0: return a e ...

  8. c语言最小公倍数简易代码,c语言求最大公约数,最小公倍数源代码

    /*求最大公约数,最小公倍数的 */ #include int maxdivisor(int ,int );/*求最大公约数函数*/ int minmultiple(int ,int ,int );/ ...

  9. C语言经典例题100道(辗转相除求最大公约数和最小公倍数)

    程序[16] 题目:输入两个正整数m和n,求其最大公约数和最小公倍数. 程序分析: (1)最小公倍数=输入的两个数之积除于它们的最大公约数,关键是求出最大公约数: (2)求最大公约数用辗转相除法(又名 ...

最新文章

  1. Java程序猿的JavaScript学习笔记(汇总文件夹)
  2. 全球首个AI设计药物进入人体试验阶段
  3. [music]Canon and Gigue in D major
  4. [html] 为什么说cookie不可以滥用?
  5. suse linux如何重置密码忘记,SUSE Linux忘记root密码的处理办法
  6. (一二六)第十一章编程练习
  7. 3D视界迎来全息视角,VR呈现效果海报,引领未来
  8. AndroidStudio_android开发在线文档_在线API_蓝牙开发在线文档---Android原生开发工作笔记243
  9. 【Spark-core学习之六】 Spark资源调度和任务调度
  10. 祝贺在龙芯平台上编译jogamp(gluegen/jogl)2.3.2通过,并运行成功
  11. Python使用Hprose
  12. 数据库操作:更新数据update
  13. python爬取拉钩网信息
  14. 【R语言数据科学】(十二):有趣的概率学(上)
  15. 始于情怀,终于品质----方寸微T630 USB3.0 替换 CYUSB3014
  16. 3G0众测靶场-0407 WriteUp
  17. Java基础:方法和类详解
  18. RecyclerView.Adapter notifyDataSetChanged 不起作用
  19. python格式jpg转换png(批量处理,深度24,尺寸不变)
  20. 洛谷 P2327 [SCOI2005]扫雷

热门文章

  1. 小米最新发布的“一指连”UWB技术了解下
  2. 如何制作自己的系统镜像以及备份管理
  3. Play Framework 2.5.x 测试环境搭建
  4. 非常精美的唐诗,无与伦比哦遥知兄弟登高处,遍插茱萸少一人。秦时明月汉时关,万里长征人未还。但使龙城飞将在,不教胡马度阴山。春眠不觉晓,处处闻啼鸟。夜来风雨声,花落知多少。君自故乡来,应知故乡事。来日绮
  5. 来电显示软件测试自学,用MSComm控件实现来电显示
  6. scala groupby用法
  7. P3386 【模板】二分图最大匹配
  8. Activiti7工作流引擎-环境搭建及创建数据库
  9. 2021-02-25 复利
  10. 一幅漫画告诉你:NB-IoT背后,还有一个大家都在说的LoRa是什么?