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中的Django框架中prefetch_related()函数对数据库查询的优化
Apr 01 Python
Python下线程之间的共享和释放示例
May 04 Python
python获取目录下所有文件的方法
Jun 01 Python
深入学习Python中的装饰器使用
Jun 20 Python
Django接受前端数据的几种方法总结
Nov 04 Python
利用Python求阴影部分的面积实例代码
Dec 05 Python
Python多线程原理与用法实例剖析
Jan 22 Python
Pytorch之contiguous的用法
Dec 31 Python
Python面向对象封装操作案例详解
Dec 31 Python
Python接口测试数据库封装实现原理
May 09 Python
如何学习Python time模块
Jun 03 Python
Python ckeditor富文本编辑器代码实例解析
Jun 22 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/08 PHP
PHP跳转页面的几种实现方法详解
2013/06/08 PHP
php计算两个文件相对路径的方法
2015/03/14 PHP
PHP提高编程效率的20个要点
2015/09/23 PHP
Laravel框架实现利用监听器进行sql语句记录功能
2018/06/06 PHP
php提供实现反射的方法和实例代码
2019/09/17 PHP
关于Laravel参数验证的一些疑与惑
2019/11/19 PHP
php判断IP地址是否在多个IP段内
2020/08/18 PHP
让任务管理器中的CPU跳舞的js代码
2008/11/01 Javascript
javascript 硬盘序列号+其它硬件信息
2008/12/23 Javascript
{}与function(){}选用空对象{}来存放keyValue
2012/05/23 Javascript
document.forms用法示例介绍
2014/06/26 Javascript
JS实现的跨浏览器解析XML文件实例
2016/06/21 Javascript
JavaScript中Array的实用操作技巧分享
2016/09/11 Javascript
使用Javascript监控前端相关数据的代码
2016/10/27 Javascript
使用jQuery实现简单的tab框实例
2017/08/22 jQuery
通过vue手动封装on、emit、off的代码详解
2019/05/29 Javascript
微信小程序tabBar 返回tabBar不刷新页面
2019/07/25 Javascript
使用webpack5从0到1搭建一个react项目的实现步骤
2020/12/16 Javascript
python格式化字符串实例总结
2014/09/28 Python
Python实现生成随机日期字符串的方法示例
2017/12/25 Python
Python操作Oracle数据库的简单方法和封装类实例
2018/05/07 Python
Python查找第n个子串的技巧分享
2018/06/27 Python
Python3 利用requests 库进行post携带账号密码请求数据的方法
2018/10/26 Python
python使用itchat模块给心爱的人每天发天气预报
2019/11/25 Python
python实现tail实时查看服务器日志示例
2019/12/24 Python
字中字效果的实现【html5实例】
2016/05/03 HTML / CSS
Michael Kors澳大利亚官网:世界知名的奢侈饰品和成衣设计师
2020/02/13 全球购物
PyQt QMainWindow的使用示例
2021/03/24 Python
日语专业毕业生自荐信
2013/11/11 职场文书
大学生校园创业计划书
2014/02/08 职场文书
大学生创业计划书
2014/08/14 职场文书
2015年乡镇残联工作总结
2015/05/13 职场文书
2015年共青团工作总结
2015/05/15 职场文书
严以修身专题学习研讨会发言材料
2015/11/09 职场文书
初中化学教学反思
2016/02/22 职场文书