Python基于辗转相除法求解最大公约数的方法示例


Posted in Python onApril 04, 2018

本文实例讲述了Python基于辗转相除法求解最大公约数的方法。分享给大家供大家参考,具体如下:

之前总结过一次高德纳TAOCP中的最大公约数求解,其实课后题中的算法修改要求实现的是辗转相除法求解最大公约数。

这个题目我最初的理解理解错了,自然也没有做出标准答案。现在按照标准答案的解答写一下相应的代码实现:

# -*- coding:utf-8 -*-
#! python2
def MaxCommDivisor(m,n):
  while m * n != 0:
    m = m % n
    if m == 0:
      return n
    else:
      n = n % m
      if n == 0:
        return m
print(MaxCommDivisor(55,120))

程序的执行结果:

Python基于辗转相除法求解最大公约数的方法示例

交换一下两个数字的位置,代码如下:

# -*- coding:utf-8 -*-
#! python2
def MaxCommDivisor(m,n):
  while m * n != 0:
    m = m % n
    if m == 0:
      return n
    else:
      n = n % m
      if n == 0:
        return m
print(MaxCommDivisor(120,55))

程序的执行结果:

Python基于辗转相除法求解最大公约数的方法示例

题目提示中提到了会降低效率,通过上面的代码来看,效率的损失应该是在除法以及判断上。在此,把之前算法的代码拿过来对比一下:

def CommDevisor(m,n):
  r = m % n
  while r != 0:
    m = n
    n = r
    r = m % n
  return n
print(CommDevisor(120,25))

运行结果:

Python基于辗转相除法求解最大公约数的方法示例

新算法在循环中,多了一个除法以及比较操作。其实,比较的效率还是不错的,但是除法的运算会导致效率的降低。

PS:这里再为大家推荐几款计算工具供大家进一步参考借鉴:

在线一元函数(方程)求解计算工具:
http://tools.3water.com/jisuanqi/equ_jisuanqi

科学计算器在线使用_高级计算器在线计算:
http://tools.3water.com/jisuanqi/jsqkexue

在线计算器_标准计算器:
http://tools.3water.com/jisuanqi/jsq

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python爬取国外天气预报网站的方法
Jul 10 Python
Python编程中对super函数的正确理解和用法解析
Jul 02 Python
Python进阶之尾递归的用法实例
Jan 31 Python
VScode编写第一个Python程序HelloWorld步骤
Apr 06 Python
在Python中定义一个常量的方法
Nov 10 Python
Python3爬虫爬取百姓网列表并保存为json功能示例【基于request、lxml和json模块】
Dec 05 Python
强悍的Python读取大文件的解决方案
Feb 16 Python
python实现的爬取电影下载链接功能示例
Aug 26 Python
50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)
Nov 20 Python
python科学计算之numpy——ufunc函数用法
Nov 25 Python
pytorch之ImageFolder使用详解
Jan 06 Python
pandas apply多线程实现代码
Aug 17 Python
对numpy中数组元素的统一赋值实例
Apr 04 #Python
Python 元类实例解析
Apr 04 #Python
对numpy 数组和矩阵的乘法的进一步理解
Apr 04 #Python
Numpy数组的保存与读取方法
Apr 04 #Python
基于Python Numpy的数组array和矩阵matrix详解
Apr 04 #Python
Python基于更相减损术实现求解最大公约数的方法
Apr 04 #Python
Python遍历numpy数组的实例
Apr 04 #Python
You might like
解决PHP在DOS命令行下却无法链接MySQL的技术笔记
2010/12/29 PHP
thinkphp区间查询、统计查询与SQL直接查询实例分析
2014/11/24 PHP
Symfony2学习笔记之插件格式分析
2016/03/17 PHP
PHP PDOStatement::nextRowset讲解
2019/02/01 PHP
PHP与Web页面的交互示例详解一
2020/08/04 PHP
RGB颜色值转HTML十六进制(HEX)代码的JS函数
2009/04/25 Javascript
5款Javascript颜色选择器
2009/10/25 Javascript
20个最新的jQuery插件
2012/01/13 Javascript
jquery实现弹出窗口效果的实例代码
2013/11/28 Javascript
js带点自动图片轮播幻灯片特效代码分享
2015/09/07 Javascript
AngularJs表单验证实例详解
2016/05/30 Javascript
自己封装的一个简单的倒计时功能实例
2016/11/23 Javascript
tangram.js库实现js类的方式实例分析
2018/01/06 Javascript
微信小程序button组件使用详解
2018/01/31 Javascript
深入浅析var,let,const的异同点
2018/08/07 Javascript
Three.JS实现三维场景
2018/12/30 Javascript
详解使用React制作一个模态框
2019/03/14 Javascript
Vue解析带html标签的字符串为dom的实例
2019/11/13 Javascript
jquery实现两个div中的元素相互拖动的方法分析
2020/04/05 jQuery
Python脚本实现Web漏洞扫描工具
2016/10/25 Python
MySQL适配器PyMySQL详解
2017/09/20 Python
flask中的wtforms使用方法
2018/07/21 Python
Python小游戏之300行代码实现俄罗斯方块
2019/01/04 Python
python实现Excel文件转换为TXT文件
2019/04/28 Python
python实现各种插值法(数值分析)
2019/07/30 Python
在PyCharm的 Terminal(终端)切换Python版本的方法
2019/08/02 Python
对Python获取屏幕截图的4种方法详解
2019/08/27 Python
python实现在线翻译
2020/06/18 Python
计算机应用与科学个人的自我评价
2013/11/15 职场文书
办公室文书岗位职责
2013/12/16 职场文书
工作会议主持词
2014/03/17 职场文书
班主任工作经验交流材料
2014/05/13 职场文书
委托证明范本
2014/11/25 职场文书
补充协议书
2015/01/28 职场文书
教师年度考核自我评鉴
2015/08/11 职场文书
CocosCreator ScrollView优化系列之分帧加载
2021/04/14 Python