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实现的用于搜索文件并进行内容替换的类实例
Jun 28 Python
Python判断直线和矩形是否相交的方法
Jul 14 Python
Python编程实现数学运算求一元二次方程的实根算法示例
Apr 02 Python
python实现list元素按关键字相加减的方法示例
Jun 09 Python
Python实现自动为照片添加日期并分类的方法
Sep 30 Python
python 把文件中的每一行以数组的元素放入数组中的方法
Apr 29 Python
pycharm 在windows上编辑代码用linux执行配置的方法
Oct 27 Python
Python合并同一个文件夹下所有PDF文件的方法
Mar 11 Python
Python 使用指定的网卡发送HTTP请求的实例
Aug 21 Python
Python实现图像去噪方式(中值去噪和均值去噪)
Dec 18 Python
pandas dataframe 中的explode函数用法详解
May 18 Python
python 实现百度网盘非会员上传超过500个文件的方法
Jan 07 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不用正则采集速度探究总结
2008/03/24 PHP
php绘制一个矩形的方法
2015/01/24 PHP
PHP分页初探 一个最简单的PHP分页代码的简单实现
2016/06/21 PHP
PHP获取访问设备信息的方法示例
2019/02/20 PHP
Laravel 模型使用软删除-左连接查询-表起别名示例
2019/10/24 PHP
CL vs ForZe BO5 第三场 2.13
2021/03/10 DOTA
Javascript 阻止javascript事件冒泡,获取控件ID值
2009/06/27 Javascript
JQuery中each()的使用方法说明
2010/08/19 Javascript
js计算精度问题小结
2013/04/22 Javascript
jQuery解决下拉框select设宽度时IE 6/7/8下option超出显示不全
2013/05/27 Javascript
Jquery实现的一种常用高亮效果示例代码
2014/01/28 Javascript
Jquery中国地图热点效果-鼠标经过弹出提示层信息的简单实例
2014/02/12 Javascript
JavaScript数组函数unshift、shift、pop、push使用实例
2014/08/27 Javascript
推荐4个原生javascript常用的函数
2015/01/12 Javascript
关于vue.extend和vue.component的区别浅析
2017/08/16 Javascript
详解vue开发中调用微信jssdk的问题
2019/04/16 Javascript
使用Python对Excel进行读写操作
2017/03/30 Python
pycharm安装图文教程
2017/05/02 Python
python放大图片和画方格实现算法
2018/03/30 Python
python获取文件真实链接的方法,针对于302返回码
2018/05/14 Python
python生成以及打开json、csv和txt文件的实例
2018/11/16 Python
Django缓存系统实现过程解析
2019/08/02 Python
python3通过udp实现组播数据的发送和接收操作
2020/05/05 Python
python 识别登录验证码图片功能的实现代码(完整代码)
2020/07/03 Python
python 使用xlsxwriter循环向excel中插入数据和图片的操作
2021/01/01 Python
python中os.remove()用法及注意事项
2021/01/31 Python
HTML5如何使用SVG的方法示例
2019/01/11 HTML / CSS
意大利高端时尚买手店:Stefania Mode
2018/03/01 全球购物
Hibernate持久层技术
2013/12/16 面试题
中专生自我鉴定范文
2013/12/19 职场文书
取保候审保证书
2014/04/30 职场文书
公司开业庆典策划方案
2014/06/04 职场文书
合同意向书范本
2014/07/30 职场文书
承租经营合作者协议书
2014/10/01 职场文书
农民工工资承诺书大全
2015/05/04 职场文书
千手观音观后感
2015/06/03 职场文书