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实现的udp协议Server和Client代码实例
Jun 04 Python
安装Python的web.py框架并从hello world开始编程
Apr 25 Python
Python中用altzone()方法处理时区的教程
May 22 Python
Python中的descriptor描述器简明使用指南
Jun 02 Python
Python实现快速排序算法及去重的快速排序的简单示例
Jun 26 Python
django轻松使用富文本编辑器CKEditor的方法
Mar 30 Python
Python操作MongoDB数据库的方法示例
Jan 04 Python
Python ORM框架Peewee用法详解
Apr 29 Python
Node.js 和 Python之间该选择哪个?
Aug 05 Python
Scrapy 配置动态代理IP的实现
Sep 28 Python
关于Numpy之repeat、tile的用法总结
Jun 02 Python
OpenCV绘制圆端矩形的示例代码
Aug 30 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
sourcesafe管理phpproj文件的补充说明(downmoon)
2009/04/11 PHP
ThinkPHP学习笔记(一)ThinkPHP部署
2014/06/22 PHP
PHP中提问频率最高的11个面试题和答案
2014/09/02 PHP
PHP使用文件锁解决高并发问题示例
2018/03/29 PHP
js 点击页面其他地方关闭弹出层(示例代码)
2013/12/24 Javascript
JavaScript常用脚本汇总(三)
2015/03/04 Javascript
jQuery+CSS实现一个侧滑导航菜单代码
2016/05/09 Javascript
node.js实现快速截图
2016/08/27 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
2016/10/09 Javascript
jQuery编写网页版2048小游戏
2017/01/06 Javascript
微信小程序tabBar用法实例详解
2017/12/04 Javascript
使用npm安装最新版本nodejs
2018/01/18 NodeJs
用node-webkit把web应用打包成桌面应用(windows环境)
2018/02/01 Javascript
JavaScript设计模式之代理模式简单实例教程
2018/07/03 Javascript
解决mpvue + vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用问题
2018/08/03 Javascript
angular将html代码输出为内容的实例
2018/09/30 Javascript
小程序实现抽奖动画
2020/04/16 Javascript
微信小程序利用swiper+css实现购物车商品删除功能
2019/03/06 Javascript
基于JavaScript实现简单抽奖功能代码实例
2020/10/20 Javascript
代码块高亮可复制显示js插件highlight.js+clipboard.js整合
2021/02/15 Javascript
[36:43]NB vs Optic 2018国际邀请赛小组赛BO1 B组加赛 8.19
2018/08/21 DOTA
Python批量转换文件编码格式
2015/05/17 Python
Python中操作mysql的pymysql模块详解
2016/09/13 Python
详解Python函数可变参数定义及其参数传递方式
2017/08/02 Python
用Python实现数据的透视表的方法
2018/11/16 Python
python list数据等间隔抽取并新建list存储的例子
2019/11/27 Python
python将dict中的unicode打印成中文实例
2020/05/11 Python
基于 HTML5 的 WebGL 3D 版俄罗斯方块的示例代码
2018/05/28 HTML / CSS
AmazeUI的JS表单验证框架实战示例分享
2020/08/21 HTML / CSS
德国婴儿服装和婴儿用品购买网站:Baby Sweets
2019/12/08 全球购物
Java面试题汇总
2015/12/06 面试题
学习自我鉴定
2014/02/01 职场文书
创建市级文明单位实施方案
2014/03/01 职场文书
个人授权委托书范本
2014/04/03 职场文书
教师爱岗敬业演讲稿
2014/05/05 职场文书
表扬信范文
2019/04/22 职场文书