# Python 3.6

# 最大公约数,最大公因子
# Greatest Common Divisor # 辗转相除法
def gcd(num1: object, num2: object) -> object:
print('num1={},num2={},r={}'.format( num1, num2, num1 % num2 ) )
if num1 % num2 == 0:
return num2
return gcd(num2, num1 % num2) # 更相减损术(递归)
def gcd2(num1, num2):
bignum = num1 if num1 >= num2 else num2
smallnum = num2 if num1 > num2 else num1
difference = bignum-smallnum # 差
print('num1={},num2={},difference={}'.format(bignum, smallnum, difference))
if smallnum == difference :
return difference
return gcd2(smallnum, difference); # 更相减损术 (循环)
def gcd3(m, n):
res=m-n
while res != n:
print('num1={},num2={},difference={}'.format(m, n, res))
m = n if n >= res else res
n = n if n <= res else res
res = m - n
return n print('-'*100)
print(gcd2(9876,8756))
print('-'*100)
print(gcd2(9876, 8756))

PyCharm中,使用Shift+F9,得到如下结果:  

Connected to pydev debugger (build 181.4892.64)
num1=9876,num2=8756,r=1120
num1=8756,num2=1120,r=916
num1=1120,num2=916,r=204
num1=916,num2=204,r=100
num1=204,num2=100,r=4
num1=100,num2=4,r=0
4
----------------------------------------------------------------------------------------------------
num1=9876,num2=8756,difference=1120
num1=8756,num2=1120,difference=7636
num1=7636,num2=1120,difference=6516
num1=6516,num2=1120,difference=5396
num1=5396,num2=1120,difference=4276
num1=4276,num2=1120,difference=3156
num1=3156,num2=1120,difference=2036
num1=2036,num2=1120,difference=916
num1=1120,num2=916,difference=204
num1=916,num2=204,difference=712
num1=712,num2=204,difference=508
num1=508,num2=204,difference=304
num1=304,num2=204,difference=100
num1=204,num2=100,difference=104
num1=104,num2=100,difference=4
num1=100,num2=4,difference=96
num1=96,num2=4,difference=92
num1=92,num2=4,difference=88
num1=88,num2=4,difference=84
num1=84,num2=4,difference=80
num1=80,num2=4,difference=76
num1=76,num2=4,difference=72
num1=72,num2=4,difference=68
num1=68,num2=4,difference=64
num1=64,num2=4,difference=60
num1=60,num2=4,difference=56
num1=56,num2=4,difference=52
num1=52,num2=4,difference=48
num1=48,num2=4,difference=44
num1=44,num2=4,difference=40
num1=40,num2=4,difference=36
num1=36,num2=4,difference=32
num1=32,num2=4,difference=28
num1=28,num2=4,difference=24
num1=24,num2=4,difference=20
num1=20,num2=4,difference=16
num1=16,num2=4,difference=12
num1=12,num2=4,difference=8
num1=8,num2=4,difference=4
4
----------------------------------------------------------------------------------------------------
num1=9876,num2=8756,difference=1120
num1=8756,num2=1120,difference=7636
num1=7636,num2=1120,difference=6516
num1=6516,num2=1120,difference=5396
num1=5396,num2=1120,difference=4276
num1=4276,num2=1120,difference=3156
num1=3156,num2=1120,difference=2036
num1=2036,num2=1120,difference=916
num1=1120,num2=916,difference=204
num1=916,num2=204,difference=712
num1=712,num2=204,difference=508
num1=508,num2=204,difference=304
num1=304,num2=204,difference=100
num1=204,num2=100,difference=104
num1=104,num2=100,difference=4
num1=100,num2=4,difference=96
num1=96,num2=4,difference=92
num1=92,num2=4,difference=88
num1=88,num2=4,difference=84
num1=84,num2=4,difference=80
num1=80,num2=4,difference=76
num1=76,num2=4,difference=72
num1=72,num2=4,difference=68
num1=68,num2=4,difference=64
num1=64,num2=4,difference=60
num1=60,num2=4,difference=56
num1=56,num2=4,difference=52
num1=52,num2=4,difference=48
num1=48,num2=4,difference=44
num1=44,num2=4,difference=40
num1=40,num2=4,difference=36
num1=36,num2=4,difference=32
num1=32,num2=4,difference=28
num1=28,num2=4,difference=24
num1=24,num2=4,difference=20
num1=20,num2=4,difference=16
num1=16,num2=4,difference=12
num1=12,num2=4,difference=8
num1=8,num2=4,difference=4
4

Process finished with exit code 0

原理:https://zhidao.baidu.com/question/177881849738799124.html

Python - 最大公约数算法的更多相关文章

  1. python数据结构与算法

    最近忙着准备各种笔试的东西,主要看什么数据结构啊,算法啦,balahbalah啊,以前一直就没看过这些,就挑了本简单的<啊哈算法>入门,不过里面的数据结构和算法都是用C语言写的,而自己对p ...

  2. 【转】你真的理解Python中MRO算法吗?

    你真的理解Python中MRO算法吗? MRO(Method Resolution Order):方法解析顺序. Python语言包含了很多优秀的特性,其中多重继承就是其中之一,但是多重继承会引发很多 ...

  3. Python数据结构与算法--List和Dictionaries

    Lists 当实现 list 的数据结构的时候Python 的设计者有很多的选择. 每一个选择都有可能影响着 list 操作执行的快慢. 当然他们也试图优化一些不常见的操作. 但是当权衡的时候,它们还 ...

  4. Python数据结构与算法--算法分析

    在计算机科学中,算法分析(Analysis of algorithm)是分析执行一个给定算法需要消耗的计算资源数量(例如计算时间,存储器使用等)的过程.算法的效率或复杂度在理论上表示为一个函数.其定义 ...

  5. Python实现ID3算法

    自己用Python写的数据挖掘中的ID3算法,现在觉得Python是实现算法的最好工具: 先贴出ID3算法的介绍地址http://wenku.baidu.com/view/cddddaed0975f4 ...

  6. 以图搜图(一):Python实现dHash算法(转)

    近期研究了一下以图搜图这个炫酷的东西.百度和谷歌都有提供以图搜图的功能,有兴趣可以找一下.当然,不是很深入.深入的话,得运用到深度学习这货.Python深度学习当然不在话下. 这个功能最核心的东西就是 ...

  7. Python之排序算法:快速排序与冒泡排序

    Python之排序算法:快速排序与冒泡排序 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/7828610.html 入坑(简称IT)这一行也有些年头了,但自老师 ...

  8. python实现排序算法 时间复杂度、稳定性分析 冒泡排序、选择排序、插入排序、希尔排序

    说到排序算法,就不得不提时间复杂度和稳定性! 其实一直对稳定性不是很理解,今天研究python实现排序算法的时候突然有了新的体会,一定要记录下来 稳定性: 稳定性指的是 当排序碰到两个相等数的时候,他 ...

  9. C语言之linux内核实现最大公约数算法

    最大公约数算法,又称欧几里德算法,至今已有几千年的历史了.在我们开始学习C语言的时候最常用的算法就是辗转相除法,其实在linux内核中,内核也是使用这样的方法实现两数最大公约数的计算. 两个整数的最大 ...

随机推荐

  1. Postgresql导出数据报版本不对

    zabbix使用得数据库是Postgresql,最近zabbix4.0版本出来了,准备把zabbix升级,得先把数据库备份,但是一直报错,如下:     查找服务器上是否有10的版本,也一直没找到   ...

  2. 关于DBX Framewrok 和 FireDac 的一点随笔

    DBX Framework (dbExpress Framework )用了很长的时间, 一直觉得简单好用,但今天需要连MySQL5.7, 发现已经没办法用了,感觉是时候放弃用它来作数据连接了. 以前 ...

  3. 串口发送端verilog代码分析

    串口发送端verilog代码分析 `timescale 1ns / 1ps ////////////////////////////////////////////////////////////// ...

  4. <亲测>centos7通过yum安装JDK1.8(实际上是openjdk)

    centos7通过yum安装JDK1.8   安装之前先检查一下系统有没有自带open-jdk 命令: rpm -qa |grep java rpm -qa |grep jdk rpm -qa |gr ...

  5. 【java】之cron表达式

    秒(~) 分钟(~) 小时(~) 天(月)(~,但是你需要考虑你月的天数) 月(~) 天(星期)(~ =SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT) .年份(-) 其中每个元素 ...

  6. 源码小结:Java 集合ArrayList,LinkedList 源码

    现在这篇主要讲List集合的三个子类: ArrayList 底层数据结构是数组.线程不安全 LinkedList 底层数据结构是链表.线程不安全 Vector 底层数据结构是数组.线程安全 Array ...

  7. 第23课 可变参数模板(4)_Optional和Lazy类的实现

    1. optional类的实现 (1)optional的功能 ①optional<T>的内部存储空间可能存储了T类型的值,也可能没有.只有当optional被T初始化之后,这个option ...

  8. Python + Robot Framework 环境搭建

    一.Python 安装 说明:由于RIDE是基于python2.x开发,后期未做python3.x兼容,所以这里安装python2.7. 链接: https://pan.baidu.com/s/1yf ...

  9. PHP生成HTML静态页面。

    function Generate(){ $html = '<!DOCTYPE html><html lang="en"><head> < ...

  10. HTML5 元素文字超出部分显示省略号(支持多行),兼容几乎所有常用浏览器

    1,公共样式,在公共的 CSS 文件中加入以下内容  /* 超出部分显示省略号,支持多行 */ .text-ells:before { content: ''; float: left; width: ...