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代码
Mar 13 Python
非递归的输出1-N的全排列实例(推荐)
Apr 11 Python
Python无损音乐搜索引擎实现代码
Feb 02 Python
pyspark 读取csv文件创建DataFrame的两种方法
Jun 07 Python
python 协程 gevent原理与用法分析
Nov 22 Python
python tkinter之 复选、文本、下拉的实现
Mar 04 Python
解决django FileFIELD的编码问题
Mar 30 Python
使用 django orm 写 exists 条件过滤实例
May 20 Python
python 实现全球IP归属地查询工具
Dec 18 Python
详解Python Celery和RabbitMQ实战教程
Jan 20 Python
pytorch 把图片数据转化成tensor的操作
Mar 04 Python
python用字节处理文件实例讲解
Apr 13 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循环函数使用介绍之PHP基础入门教程
2013/09/21 PHP
PHP使用ffmpeg给视频增加字幕显示的方法
2015/03/12 PHP
php将字符串转换为数组实例讲解
2020/05/05 PHP
基于jquery固定于顶部的导航响应浏览器滚动条事件
2014/11/02 Javascript
js+jquery实现图片裁剪功能
2015/01/02 Javascript
js接收并转化Java中的数组对象的方法
2016/08/11 Javascript
JS转换HTML转义符的方法
2016/08/24 Javascript
Dropzone.js实现文件拖拽上传功能(附源码下载)
2016/11/22 Javascript
javascript 闭包详解及简单实例应用
2016/12/31 Javascript
微信小程序动态添加分享数据
2017/06/14 Javascript
简单谈谈js的数据类型
2017/09/25 Javascript
nodejs微信扫码支付功能实现
2018/02/17 NodeJs
Koa项目搭建过程详细记录
2018/04/12 Javascript
Vue结合Video.js播放m3u8视频流的方法示例
2018/05/04 Javascript
使用Vue.js 和Chart.js制作绚丽多彩的图表
2019/06/15 Javascript
nodejs实现聊天机器人功能
2019/09/19 NodeJs
搭建vscode+vue环境的详细教程
2020/08/31 Javascript
Nodejs 数组的队列以及forEach的应用详解
2021/02/25 NodeJs
python单元测试unittest实例详解
2015/05/11 Python
python检测文件夹变化,并拷贝有更新的文件到对应目录的方法
2018/10/17 Python
在cmder下安装ipython以及环境的搭建
2018/10/19 Python
Python装饰器语法糖
2019/01/02 Python
python实现图片二值化及灰度处理方式
2019/12/07 Python
css3实现图片遮罩效果鼠标hover以后出现文字
2013/11/05 HTML / CSS
使用HTML和CSS实现的标签云效果(附demo)
2021/02/03 HTML / CSS
学生个人求职自荐信格式
2013/09/23 职场文书
酒吧员工的岗位职责
2013/11/26 职场文书
工程专业毕业生自荐信范文
2013/12/25 职场文书
外贸专业求职信
2014/03/09 职场文书
最常使用的求职信
2014/05/25 职场文书
幼儿园中班个人总结
2015/02/28 职场文书
2015年节能减排工作总结
2015/05/14 职场文书
六一文艺汇演主持词
2015/06/30 职场文书
施工安全责任协议书
2016/03/23 职场文书
Django migrate报错的解决方案
2021/05/20 Python
Vue的生命周期一起来看看
2022/02/24 Vue.js