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批量修改文件后缀示例代码分享
Dec 24 Python
Python虚拟环境Virtualenv使用教程
May 18 Python
深入理解 Python 中的多线程 新手必看
Nov 20 Python
Python引用传值概念与用法实例小结
Oct 07 Python
用python实现的线程池实例代码
Jan 06 Python
tensorflow 保存模型和取出中间权重例子
Jan 24 Python
Python 动态变量名定义与调用方法
Feb 09 Python
Python终端输出彩色字符方法详解
Feb 11 Python
TensorFlow tf.nn.softmax_cross_entropy_with_logits的用法
Apr 19 Python
pyspark给dataframe增加新的一列的实现示例
Apr 24 Python
python 中 .py文件 转 .pyd文件的操作
Mar 04 Python
Python趣味挑战之用pygame实现简单的金币旋转效果
May 31 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
2006/12/14 PHP
php中实现记住密码下次自动登录的例子
2014/11/06 PHP
jQuery+Ajax+PHP“喜欢”评级功能实现代码
2015/10/08 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
<script defer> defer 是什么意思
2009/05/10 Javascript
javascript OFFICE控件测试代码
2009/12/08 Javascript
jquery异步请求实例代码
2011/06/21 Javascript
firefox下jQuery UI Autocomplete 1.8.*中文输入修正方法
2012/09/19 Javascript
jquery设置text的值示例(设置文本框 DIV 表单值)
2014/01/06 Javascript
jquery禁用右键单击功能屏蔽F5刷新
2014/03/17 Javascript
EasyUI在表单提交之前进行验证的实例代码
2016/06/24 Javascript
让DIV的滚动条自动滚动到最底部的3种方法(推荐)
2016/09/24 Javascript
基于javascript实现的购物商城商品倒计时实例
2016/12/11 Javascript
JS中检测数据类型的几种方式及优缺点小结
2016/12/12 Javascript
一个有意思的鼠标点击文字特效jquery代码
2017/09/23 jQuery
详解ionic本地相册、拍照、裁剪、上传(单图完全版)
2017/10/10 Javascript
Vue中v-show添加表达式的问题(判断是否显示)
2018/03/26 Javascript
node实现的爬虫功能示例
2018/05/04 Javascript
解析vue data不可以使用箭头函数问题
2018/07/03 Javascript
详解webpack4.x之搭建前端开发环境
2019/03/28 Javascript
微信小程序实现限制用户转发功能的实例代码
2020/02/22 Javascript
wepy--用vantUI 实现上弹列表并选择相应的值操作
2020/11/03 Javascript
JPype实现在python中调用JAVA的实例
2017/07/19 Python
Python通过matplotlib绘制动画简单实例
2017/12/13 Python
Python实现的连接mssql数据库操作示例
2018/08/17 Python
python粘包问题及socket套接字编程详解
2019/06/29 Python
python使用Qt界面以及逻辑实现方法
2019/07/10 Python
pytorch下大型数据集(大型图片)的导入方式
2020/01/08 Python
Python venv虚拟环境配置过程解析
2020/07/08 Python
Python自定义sorted排序实现方法详解
2020/09/18 Python
妇产医师自荐信
2014/01/29 职场文书
2015年教师自我评价范文
2015/03/04 职场文书
2015年计生工作总结范文
2015/04/24 职场文书
关于nginx 实现jira反向代理的问题
2021/09/25 Servers
Python中生成随机数据安全性、多功能性、用途和速度方面进行比较
2022/04/14 Python
Python实现简单得递归下降Parser
2022/05/02 Python