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程序实例(通讯录)
Nov 29 Python
python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
Jun 09 Python
python修改字典内key对应值的方法
Jul 11 Python
更改Ubuntu默认python版本的两种方法python-> Anaconda
Dec 18 Python
Django处理文件上传File Uploads的实例
May 28 Python
Python 使用PIL中的resize进行缩放的实例讲解
Aug 03 Python
Python----数据预处理代码实例
Mar 20 Python
python查找重复图片并删除(图片去重)
Jul 16 Python
Python-opencv 双线性插值实例
Jan 17 Python
Python运算符+与+=的方法实例
Feb 18 Python
python 爬取哔哩哔哩up主信息和投稿视频
Jun 07 Python
Python OpenCV超详细讲解基本功能
Apr 02 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 a simple smtp class
2007/11/26 PHP
PHP中的cookie不用刷新就生效的方法
2012/02/04 PHP
一个不易被发现的PHP后门代码解析
2014/07/05 PHP
详解WordPress开发中的get_post与get_posts函数使用
2016/01/04 PHP
使用XHProf查找PHP性能瓶颈的实例
2017/12/13 PHP
java解析json方法总结
2019/05/16 PHP
jQuery的deferred对象详解
2014/11/12 Javascript
jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)
2016/04/08 Javascript
如何在Angular.JS中接收并下载PDF
2016/11/26 Javascript
基于bootstrap的选择框插件icheck
2016/12/23 Javascript
js随机生成一个验证码
2017/06/01 Javascript
微信小程序表单验证form提交错误提示效果
2020/06/19 Javascript
Node.js系列之连接DB的方法(3)
2019/08/30 Javascript
javascript中innerHTML 获取或替换html内容的实现代码
2020/03/17 Javascript
[08:04]TI4西雅图DOTA2前线报道 海涛探访各路人马
2014/07/09 DOTA
Python程序语言快速上手教程
2012/07/18 Python
Python设计模式编程中解释器模式的简单程序示例分享
2016/03/02 Python
Python语言描述KNN算法与Kd树
2017/12/13 Python
python 随机森林算法及其优化详解
2019/07/11 Python
初次部署django+gunicorn+nginx的方法步骤
2019/09/11 Python
Django {{ MEDIA_URL }}无法显示图片的解决方式
2020/04/07 Python
设计师家具购买和委托在线市场:Viyet
2016/11/16 全球购物
Tripadvisor新西兰:阅读评论,比较价格和酒店预订
2018/02/10 全球购物
Ajax请求总共有多少种Callback
2016/07/17 面试题
业务经理的岗位职责
2013/11/16 职场文书
中医专业职业生涯规划书范文
2014/01/04 职场文书
初三化学教学反思
2014/01/23 职场文书
报社实习生自荐信
2014/01/24 职场文书
预备党员政审材料
2014/02/04 职场文书
岗位竞聘书范文
2014/03/31 职场文书
项目投资意向书
2014/04/01 职场文书
英语教师自荐信
2014/05/26 职场文书
医药销售自我评价200字
2014/09/11 职场文书
员工激励培训演讲稿
2014/09/16 职场文书
个人查摆问题及整改措施
2014/10/16 职场文书
python实现会员信息管理系统(List)
2022/03/18 Python