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代码来绘制彭罗斯点阵的教程
Apr 03 Python
zookeeper python接口实例详解
Jan 18 Python
对numpy中轴与维度的理解
Apr 18 Python
python调用百度语音REST API
Aug 30 Python
在python中实现对list求和及求积
Nov 14 Python
uwsgi+nginx部署Django项目操作示例
Dec 04 Python
使用k8s部署Django项目的方法步骤
Jan 14 Python
python os.path.isfile 的使用误区详解
Nov 29 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
Jan 19 Python
python生成xml时规定dtd实例方法
Sep 21 Python
Python3+RIDE+RobotFramework自动化测试框架搭建过程详解
Sep 23 Python
Django和Ueditor自定义存储上传文件的文件名
Feb 25 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/11/14 PHP
PHP 木马攻击防御技巧
2009/06/13 PHP
php下过滤html代码的函数 提高程序安全性
2010/03/02 PHP
PHP正确解析UTF-8字符串技巧应用
2012/11/07 PHP
Yii2 输出xml格式数据的方法
2016/05/03 PHP
Yii2框架可逆加密简单实现方法
2017/08/25 PHP
vmware linux系统安装最新的php7图解
2019/04/14 PHP
laravel 如何实现引入自己的函数或类库
2019/10/15 PHP
JavaScript null和undefined区别分析
2009/10/14 Javascript
Javascript 面向对象 重载
2010/05/13 Javascript
jquery 多行滚动代码(附详细解释)
2010/06/17 Javascript
js中哈希表的几种用法总结
2014/01/28 Javascript
jquery选择器大全 全面详解jquery选择器
2014/03/06 Javascript
15个jquery常用方法、小技巧分享
2015/01/13 Javascript
nodejs事件的监听与触发的理解分析
2015/02/12 NodeJs
使用requestAnimationFrame实现js动画性能好
2015/08/06 Javascript
jQuery实现本地预览上传图片功能
2016/01/08 Javascript
使用Bootstrap + Vue.js实现添加删除数据示例
2017/02/27 Javascript
基于JavaScript实现带数据验证和复选框的表单提交
2017/08/23 Javascript
新版vue-cli模板下本地开发环境使用node服务器跨域的方法
2018/04/03 Javascript
解决cordova+vue 项目打包成APK应用遇到的问题
2019/05/10 Javascript
Node.js在图片模板上生成二维码图片并附带底部文字说明实现详解
2019/08/07 Javascript
javascript设计模式 ? 简单工厂模式原理与应用实例分析
2020/04/09 Javascript
rhythmbox中文名乱码问题解决方法
2008/09/06 Python
如何使用Python 打印各种三角形
2019/06/28 Python
tensorflow 获取checkpoint中的变量列表实例
2020/02/11 Python
Python求两个字符串最长公共子序列代码实例
2020/03/05 Python
python模拟实现分发扑克牌
2020/04/22 Python
Python3通过chmod修改目录或文件权限的方法示例
2020/06/08 Python
StubHub巴西:购买和出售您的门票
2016/07/22 全球购物
Oracle性能调优原则
2012/05/03 面试题
应届毕业生如何写求职信
2014/02/16 职场文书
优秀纪检干部材料
2014/08/27 职场文书
房地产置业顾问岗位职责
2015/04/11 职场文书
办公室主任岗位竞聘书
2015/09/15 职场文书
Redis中有序集合的内部实现方式的详细介绍
2022/03/16 Redis