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 相关文章推荐
Django静态资源URL STATIC_ROOT的配置方法
Nov 08 Python
Python实现压缩和解压缩ZIP文件的方法分析
Sep 28 Python
python dataframe astype 字段类型转换方法
Apr 11 Python
用Python写脚本,实现完全备份和增量备份的示例
Apr 29 Python
通过Pandas读取大文件的实例
Jun 07 Python
Python多继承原理与用法示例
Aug 23 Python
使用pyqt 实现重复打开多个相同界面
Dec 13 Python
Pytorch中的VGG实现修改最后一层FC
Jan 15 Python
自定义Django默认的sitemap站点地图样式
Mar 04 Python
利用Python将多张图片合成视频的实现
Nov 23 Python
Python实现Telnet自动连接检测密码的示例
Apr 16 Python
Python面试不修改数组找出重复的数字
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 输出缓存详解
2009/06/20 PHP
详解WordPress开发中的get_post与get_posts函数使用
2016/01/04 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
2016/09/22 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
网页设计常用的一些技巧
2006/12/22 Javascript
7个Javascript地图脚本整理
2009/10/20 Javascript
离开页面时检测表单元素是否被修改,提示保存的js代码
2010/08/25 Javascript
js下通过getList函数实现分页效果的代码
2010/09/17 Javascript
JavaScript中的Array对象使用说明
2011/01/17 Javascript
文本框获得焦点和失去焦点的判断代码
2012/03/18 Javascript
简单时间提示DEMO从0开始一直进行计时
2013/11/19 Javascript
点击表单提交时出现jQuery没有权限的解决方法
2014/07/23 Javascript
使表格的标题列可左右拉伸jquery插件封装
2014/11/24 Javascript
全面解析Bootstrap排版使用方法(文字样式)
2015/11/30 Javascript
javascript特殊日历控件分享
2016/03/07 Javascript
JavaScript中匿名函数的递归调用
2017/01/22 Javascript
seajs中最常用的7个功能、配置示例
2017/10/10 Javascript
vue组件之Alert的实现代码
2017/10/17 Javascript
Vue项目数据动态过滤实践及实现思路
2018/09/11 Javascript
vue.js指令v-for使用以及下标索引的获取
2019/01/31 Javascript
vue 点击其他区域关闭自定义div操作
2020/07/17 Javascript
vue实现简易的双向数据绑定
2020/12/29 Vue.js
pycharm 使用心得(六)进行简单的数据库管理
2014/06/06 Python
Python 模板引擎的注入问题分析
2017/01/01 Python
Python实现图片转字符画的示例代码
2017/08/21 Python
PyCharm代码提示忽略大小写设置方法
2018/10/28 Python
详解python websocket获取实时数据的几种常见链接方式
2019/07/01 Python
pycharm软件实现设置自动保存操作
2020/06/08 Python
学python爬虫能做什么
2020/07/29 Python
实习单位推荐信范文
2013/11/27 职场文书
公司财务自我评价分享
2013/12/17 职场文书
2014三八妇女节活动总结范文四篇
2014/03/09 职场文书
婚前协议书范本两则
2014/10/16 职场文书
2014社区健康教育工作总结
2014/12/16 职场文书
Nginx URL重写rewrite机制原理及使用实例
2021/04/01 Servers
利用Nginx代理如何解决前端跨域问题详析
2021/04/02 Servers