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使用pymysql实现操作mysql
Sep 13 Python
Pyspider中给爬虫伪造随机请求头的实例
May 07 Python
无法使用pip命令安装python第三方库的原因及解决方法
Jun 12 Python
Python批处理删除和重命名文件夹的实例
Jul 11 Python
python requests证书问题解决
Sep 05 Python
python栈的基本定义与使用方法示例【初始化、赋值、入栈、出栈等】
Oct 24 Python
python中删除某个元素的方法解析
Nov 05 Python
Pytorch数据拼接与拆分操作实现图解
Apr 30 Python
解决keras使用cov1D函数的输入问题
Jun 29 Python
pytorch 中forward 的用法与解释说明
Feb 26 Python
教你怎么用Python实现GIF动图的提取及合成
Jun 15 Python
pycharm无法安装cv2模块问题
May 20 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原理之异常机制
2010/08/21 PHP
Windows中使用计划任务自动执行PHP程序实例
2014/05/09 PHP
PHP中提问频率最高的11个面试题和答案
2014/09/02 PHP
Yii把CGridView文本框换成下拉框的方法
2014/12/03 PHP
PHP实现从上往下打印二叉树的方法
2018/01/18 PHP
Javascript 调试利器 Firebug使用详解六
2009/07/05 Javascript
jquery插件制作 提示框插件实现代码
2012/08/17 Javascript
jquery异步跨域访问代码
2013/06/28 Javascript
使用Sticker.js实现贴纸效果
2015/01/28 Javascript
js确认框confirm()用法实例详解
2016/01/07 Javascript
基于JS实现新闻列表无缝向上滚动实例代码
2016/01/22 Javascript
jQuery的框架介绍
2016/05/11 Javascript
Google 地图获取API Key详细教程
2016/08/06 Javascript
正则表达式替换html元素属性的方法
2016/11/26 Javascript
jQuery通过改变input的type属性实现密码显示隐藏切换功能
2017/02/08 Javascript
基于DOM节点删除之empty和remove的区别(详解)
2017/09/11 Javascript
关于Vue背景图打包之后访问路径错误问题的解决
2017/11/03 Javascript
Angular使用Restful的增删改
2018/12/28 Javascript
three.js 制作动态二维码的示例代码
2020/07/31 Javascript
[52:07]完美世界DOTA2联赛PWL S3 LBZS vs access 第二场 12.10
2020/12/13 DOTA
python数据结构树和二叉树简介
2014/04/29 Python
Python随机读取文件实现实例
2017/05/25 Python
Python虚拟环境项目实例
2017/11/20 Python
Python中optparser库用法实例详解
2018/01/26 Python
解决python升级引起的pip执行错误的问题
2018/06/12 Python
浅谈python3发送post请求参数为空的情况
2018/12/28 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
2019/07/06 Python
Python基于mediainfo批量重命名图片文件
2020/12/29 Python
socket.io 和canvas 实现的共享画板功能
2019/05/22 HTML / CSS
阿迪达斯香港官网:adidas香港
2019/11/09 全球购物
医院护理人员的自我评价分享
2013/10/04 职场文书
蔬菜基地的创业计划书
2014/01/06 职场文书
放假通知怎么写
2015/08/18 职场文书
2016年学校“3.12”植树节活动总结
2016/03/16 职场文书
Python中的np.argmin()和np.argmax()函数用法
2021/06/02 Python
解决MySQL Varchar 类型尾部空格的问题
2022/04/06 MySQL