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自动化构建工具scons使用入门笔记
Mar 10 Python
python实现简单的计时器功能函数
Mar 14 Python
Linux中Python 环境软件包安装步骤
Mar 31 Python
Python正则表达式非贪婪、多行匹配功能示例
Aug 08 Python
Python 获得命令行参数的方法(推荐)
Jan 24 Python
在Pycharm中调试Django项目程序的操作方法
Jul 17 Python
Python使用扩展库pywin32实现批量文档打印实例
Apr 09 Python
基于Python爬虫采集天气网实时信息
Jun 05 Python
详解如何在pyqt中通过OpenCV实现对窗口的透视变换
Sep 20 Python
C++和python实现阿姆斯特朗数字查找实例代码
Dec 07 Python
学点简单的Django之第一个Django程序的实现
Feb 24 Python
Pytorch实现图像识别之数字识别(附详细注释)
May 11 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
实用函数4
2007/11/08 PHP
根据ip调用新浪api获取城市名并转成拼音
2014/03/07 PHP
php简单计算页面加载时间的方法
2015/06/19 PHP
什么是PEAR?什么是PECL?PHP中两个容易混淆的概念解释
2015/07/01 PHP
Apache启动报错No space left on device: AH00023该怎么解决
2015/10/16 PHP
php ci 获取表单中多个同名input元素值的代码
2016/03/25 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
Prototype源码浅析 String部分(三)之HTML字符串处理
2012/01/15 Javascript
JS异常处理的一个想法(sofish)
2013/03/14 Javascript
使用JavaScript 编写简单计算器
2014/11/24 Javascript
使用jquery动态加载Js文件和Css文件
2015/10/24 Javascript
Node.js Streams文件读写操作详解
2016/07/04 Javascript
vue结合Echarts实现点击高亮效果的示例
2018/03/17 Javascript
详解vue+axios给开发环境和生产环境配置不同的接口地址
2019/08/16 Javascript
node中使用log4js4.x版本记录日志的方法
2019/08/20 Javascript
Vue如何实现监听组件原生事件
2020/07/03 Javascript
vue-quill-editor 自定义工具栏和自定义图片上传路径操作
2020/08/03 Javascript
Python 除法小技巧
2008/09/06 Python
Python学习入门之区块链详解
2017/07/25 Python
wx.CheckBox创建复选框控件并响应鼠标点击事件
2018/04/25 Python
python使用matplotlib模块绘制多条折线图、散点图
2020/04/26 Python
Python读取指定日期邮件的实例
2019/02/01 Python
Pandas删除数据的几种情况(小结)
2019/06/21 Python
python3.6编写的单元测试示例
2019/08/17 Python
python matplotlib折线图样式实现过程
2019/11/04 Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
2020/03/06 Python
python多线程实现同时执行两个while循环的操作
2020/05/02 Python
Python的collections模块真的很好用
2021/03/01 Python
html5 初试 indexedDB(推荐)
2016/07/21 HTML / CSS
应届护士推荐信
2013/11/16 职场文书
幼儿园小班评语
2014/04/18 职场文书
一份恶作剧的检讨书
2014/09/13 职场文书
党的群众路线教育实践活动专题组织生活会发言材料
2014/10/17 职场文书
干货:如何写好工作计划!
2019/05/17 职场文书
工作总结之小学教师体育工作范文(3篇)
2019/10/07 职场文书
导游词之湖北梁子湖
2019/11/07 职场文书