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 03 Python
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
Mar 16 Python
Python实现自动为照片添加日期并分类的方法
Sep 30 Python
python自动发邮件库yagmail的示例代码
Feb 23 Python
实用自动化运维Python脚本分享
Jun 04 Python
Python 堆叠柱状图绘制方法
Jul 29 Python
python中pygame安装过程(超级详细)
Aug 04 Python
用sqlalchemy构建Django连接池的实例
Aug 29 Python
使用 Supervisor 监控 Python3 进程方式
Dec 05 Python
python3.6环境下安装freetype库和基本使用方法(推荐)
May 10 Python
如何向scrapy中的spider传递参数的几种方法
Nov 18 Python
python 自定义异常和主动抛出异常(raise)的操作
Dec 11 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
一个目录遍历函数
2006/10/09 PHP
php实现的MySQL通用查询程序
2007/03/11 PHP
《PHP编程最快明白》第七讲:php图片验证码与缩略图
2010/11/01 PHP
php Hex RGB颜色值互换的使用
2013/05/10 PHP
php+ajax实现无刷新分页的方法
2014/11/04 PHP
PHP cURL初始化和执行方法入门级代码
2015/05/28 PHP
PHP简单字符串过滤方法示例
2016/09/04 PHP
Laravel 创建可以传递参数 Console服务的例子
2019/10/14 PHP
jQuery一步一步实现跨浏览器的可编辑表格,支持IE、Firefox、Safari、Chrome、Opera
2009/08/28 Javascript
JQuery判断HTML元素是否存在的两种解决方法
2013/12/26 Javascript
浅谈EasyUI中编辑treegrid的方法
2015/03/01 Javascript
javascript获取本机操作系统类型的方法
2015/08/13 Javascript
ajax跨域调用webservice的实现代码
2016/05/09 Javascript
Javascript 实现匿名递归的实例代码
2017/05/25 Javascript
原生JS上传大文件显示进度条 php上传文件代码
2020/03/27 Javascript
深入理解js 中async 函数的含义和用法
2018/05/13 Javascript
原生js基于canvas实现一个简单的前端截图工具代码实例
2019/09/10 Javascript
JS+JQuery实现无缝连接轮播图
2020/12/30 jQuery
[46:49]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.19
2020/12/24 DOTA
利用Python的Django框架中的ORM建立查询API
2015/04/20 Python
Java及python正则表达式详解
2017/12/27 Python
Python分支结构(switch)操作简介
2018/01/17 Python
django 删除数据库表后重新同步的方法
2018/05/27 Python
python多任务及返回值的处理方法
2019/01/22 Python
Python数据可视化常用4大绘图库原理详解
2020/10/23 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
2020/11/24 Python
Python基于Socket实现简易多人聊天室的示例代码
2020/11/29 Python
Python脚本调试工具安装过程
2021/01/11 Python
H5离线存储Manifest原理及使用
2020/04/28 HTML / CSS
应届生新闻编辑求职信
2013/11/19 职场文书
运动会解说词100字
2014/01/31 职场文书
2014广电局实施党的群众路线教育实践活动方案思想汇报
2014/09/22 职场文书
教师群众路线剖析材料
2014/09/29 职场文书
2014年客服工作总结范文
2014/11/13 职场文书
“学党章、守党纪、讲党规”学习心得体会
2016/01/14 职场文书
win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境的方法
2022/06/25 Servers