给定两个整数,求出这两个整数的最大公约数是我们从小就接触过的问题,但是我们如何用更简洁的算法来计算呢?

本文中,假定这两个整数是m和n且m>=n>=0。让我们从最简单的算法说起!

一、Consecutive Integer Test——连续整数检测算法

由最大公约数的概念,我们可以知道,能够同时被两个给定整数整除的最大整数,即是最大公约数。那么我们可以最简单的想出用暴力搜索的方法,从两个整数中较小的那一个开始,向下穷举遍历,找到最大公约数。当然,这种方法是低效的,存在着很大的不确定性。

Step1:将min{m,n}的值赋给t。

Step2:判断t是否为0,如果是0,返回max{m,n};否则,进入第三步。

Step3:m除以t,如果余数为0,则进入第四步;否则进入第五步。

Step4:n除以t,如果余数为0,则返回t值作为结果;否则进入第五步。

Step5:把t的值减1,返回第三步。

1 int consecutiveIntegerTest(int m, intn) {2 int t =n;3 while (t != 0) {4 if (m % t == 0) {5 if (n % t == 0)6 returnt;7 else

8 --t;9 } else

10 --t;11 }12 returnm;13 }

最终的返回值m,即为m和n的最大公约数。

二、Euclidean(recursion)——欧几里得算法

求取最大公约数最经典的算法莫过于欧几里得算法了,既是所谓的辗转相除法,比起暴利搜索更加高效稳定。

欧几里得算法有递归和非递归两种表达方式。

(递归方式)

1 int Euclidean_Recursion(int m, intn) {2 if (n == 0)3 returnm;4 return method1(n, m %n);5 }

(非递归方式)

1 int Euclidean_nonRecursion(int m, intn) {2 while (n != 0) {3 int r = m %n;4 m =n;5 n =r;6 }7 returnm;8 }

以上就是求出m,n最大公约数的三种算法,希望大家互相学习。

人生有理想,拼搏需坚持。

阶段小目标,跬步成千里!

最大公约数简便算法_求最大公约数的几种算法相关推荐

  1. 最大公约数简便算法_求最大公约数的4种算法

    for(z=0; z<10000000; z++) 循环只是为了增加程序的运行时间, 让我们体会算法的时间复杂度. 算法一:短除法 想法,采用短除法找出2个数的所有公约数,将这些公因子相乘,结果 ...

  2. c语言用质因数分解法求最大公约数,分解质因数法求最大公约数(javascrip实现)

    //判断是否为质数------------------------------------------------------ function isPrime(n) { for (var i = n ...

  3. java 直线交点_[Java教程]谈谈求线段交点的几种算法(js实现,完整版)

    [Java教程]谈谈求线段交点的几种算法(js实现,完整版) 0 2014-08-27 10:05:22 "求线段交点"是一种非常基础的几何计算, 在很多游戏中都会被使用到. 下面 ...

  4. js求两圆交点_谈谈求线段交点的几种算法(js实现,完整版)

    "求线段交点"是一种非常基础的几何计算, 在很多游戏中都会被使用到. 下面我就现学现卖的把最近才学会的一些"求线段交点"的算法总结一下, 希望对大家有所帮助. ...

  5. java 求最大公因数_求最大公约数的三种算法(java实现)

    三种算法: //欧几里得算法(辗转相除): public static int gcd(int m,int n) { if(m int k=m; m=n; n=k; } //if(m%n!=0) { ...

  6. 辗转取余数php算最小公约数,(算法)求最大公约数和最小公约数

    最大公约数定义: 最大公约数(最大公因数)就是几个数公有的因数中最大的一个. 最小公倍数定于: 最小公倍数就是几个数公有的倍数中最小的一个. 求最小公倍数的算法:(两个数的乘积/最大公约数) 求最大公 ...

  7. mysql最大公约数函数_求最大公约数和最小公倍(PHP)

    求最大公约数和最小公倍(PHP) 用程序求最大公约数和最小公倍数最容易想到的方法如下: //求最大公约数 function max_divisor($a, $b) { $n = min($a, $b) ...

  8. C语言求35 45的最大公约数,C语言怎么求最大公约数和最小公倍数

    #3 段梦超2009-12-20 21:31 输入两个正整数m和n, 求其最大公约数和最小公倍数. <1> 用辗转相除法求最大公约数 算法描述: m对n求余为a, 若a不等于0 则 m 最 ...

  9. linux求最大公约数视频,C语言求最大公约数代码及解析

    问题描述 从键盘输入两个整数,求任意两个正整数的最大公约数(GCD). 最大公因数,也称最大公约数.最大公因子,指两个或多个整数共有约数中最大的一个.a,b的最大公约数记为(a,b),同样的,a,b, ...

最新文章

  1. Linux下Redis-3.0.7版本的安装以及Redis主备的部署(一)
  2. Metasploit save命令技巧
  3. 空间刚架matlab_基本平面刚架MATLAB程序
  4. 深度学习100例 -卷积神经网络(ResNet-50)鸟类识别 | 第8天
  5. python为什么不能自动语法_Python 为什么不支持 i++ 自增语法,不提供 ++ 操作符?...
  6. sap 采购订单中收货容差的取值顺序
  7. Java使用JDBC连接随意类型数据库(mysql oracle。。)
  8. icinga-report+jasperserver+icinga-web安装步骤
  9. 产业链人士:LCD显示驱动芯片价格有望趋于稳定
  10. 500份IT数字化转型资料,限量领!堪称最全,领不到会发慌
  11. socket上传nsdictionary的json数据异常
  12. coreldraw x7对齐快捷键_CorelDraw X7中文版快捷键大全CDR教程
  13. 【三 HLS】HLS实现肤检测
  14. git format-patch命令介绍
  15. 我的世界怎么在网易的服务器里显示皮肤,我的世界怎么显示皮肤,怎么在嗨皮咳嗽上显示自定义皮肤...
  16. c# 正则表达式 Group
  17. T1113 整理药名
  18. matlab(二)统计图
  19. 解决 Windows中丢失d3dx9_39.dll
  20. VeryCD灌水机演示代码(附另外一个发贴机代码)

热门文章

  1. VHOST KICKCALL 原理
  2. OSSEC主要功能及原理+详细配置+日志文件分析
  3. 资产折旧期间日志表TABA
  4. Tensorflow学习笔记-过度拟合问题
  5. 从技术专才到现代管理者
  6. 高数知识点总结-------导数
  7. RGB、YUV、HSV和HSL区别和关联
  8. 电容或电感的电压_玉山YGR智能电容以客为尊-老友网
  9. 2015中国衣柜十大品牌排名
  10. PointNet系列论文解读