Python - 最大公约数算法
# 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 - 最大公约数算法的更多相关文章
- python数据结构与算法
最近忙着准备各种笔试的东西,主要看什么数据结构啊,算法啦,balahbalah啊,以前一直就没看过这些,就挑了本简单的<啊哈算法>入门,不过里面的数据结构和算法都是用C语言写的,而自己对p ...
- 【转】你真的理解Python中MRO算法吗?
你真的理解Python中MRO算法吗? MRO(Method Resolution Order):方法解析顺序. Python语言包含了很多优秀的特性,其中多重继承就是其中之一,但是多重继承会引发很多 ...
- Python数据结构与算法--List和Dictionaries
Lists 当实现 list 的数据结构的时候Python 的设计者有很多的选择. 每一个选择都有可能影响着 list 操作执行的快慢. 当然他们也试图优化一些不常见的操作. 但是当权衡的时候,它们还 ...
- Python数据结构与算法--算法分析
在计算机科学中,算法分析(Analysis of algorithm)是分析执行一个给定算法需要消耗的计算资源数量(例如计算时间,存储器使用等)的过程.算法的效率或复杂度在理论上表示为一个函数.其定义 ...
- Python实现ID3算法
自己用Python写的数据挖掘中的ID3算法,现在觉得Python是实现算法的最好工具: 先贴出ID3算法的介绍地址http://wenku.baidu.com/view/cddddaed0975f4 ...
- 以图搜图(一):Python实现dHash算法(转)
近期研究了一下以图搜图这个炫酷的东西.百度和谷歌都有提供以图搜图的功能,有兴趣可以找一下.当然,不是很深入.深入的话,得运用到深度学习这货.Python深度学习当然不在话下. 这个功能最核心的东西就是 ...
- Python之排序算法:快速排序与冒泡排序
Python之排序算法:快速排序与冒泡排序 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/7828610.html 入坑(简称IT)这一行也有些年头了,但自老师 ...
- python实现排序算法 时间复杂度、稳定性分析 冒泡排序、选择排序、插入排序、希尔排序
说到排序算法,就不得不提时间复杂度和稳定性! 其实一直对稳定性不是很理解,今天研究python实现排序算法的时候突然有了新的体会,一定要记录下来 稳定性: 稳定性指的是 当排序碰到两个相等数的时候,他 ...
- C语言之linux内核实现最大公约数算法
最大公约数算法,又称欧几里德算法,至今已有几千年的历史了.在我们开始学习C语言的时候最常用的算法就是辗转相除法,其实在linux内核中,内核也是使用这样的方法实现两数最大公约数的计算. 两个整数的最大 ...
随机推荐
- Postgresql导出数据报版本不对
zabbix使用得数据库是Postgresql,最近zabbix4.0版本出来了,准备把zabbix升级,得先把数据库备份,但是一直报错,如下: 查找服务器上是否有10的版本,也一直没找到 ...
- 关于DBX Framewrok 和 FireDac 的一点随笔
DBX Framework (dbExpress Framework )用了很长的时间, 一直觉得简单好用,但今天需要连MySQL5.7, 发现已经没办法用了,感觉是时候放弃用它来作数据连接了. 以前 ...
- 串口发送端verilog代码分析
串口发送端verilog代码分析 `timescale 1ns / 1ps ////////////////////////////////////////////////////////////// ...
- <亲测>centos7通过yum安装JDK1.8(实际上是openjdk)
centos7通过yum安装JDK1.8 安装之前先检查一下系统有没有自带open-jdk 命令: rpm -qa |grep java rpm -qa |grep jdk rpm -qa |gr ...
- 【java】之cron表达式
秒(~) 分钟(~) 小时(~) 天(月)(~,但是你需要考虑你月的天数) 月(~) 天(星期)(~ =SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT) .年份(-) 其中每个元素 ...
- 源码小结:Java 集合ArrayList,LinkedList 源码
现在这篇主要讲List集合的三个子类: ArrayList 底层数据结构是数组.线程不安全 LinkedList 底层数据结构是链表.线程不安全 Vector 底层数据结构是数组.线程安全 Array ...
- 第23课 可变参数模板(4)_Optional和Lazy类的实现
1. optional类的实现 (1)optional的功能 ①optional<T>的内部存储空间可能存储了T类型的值,也可能没有.只有当optional被T初始化之后,这个option ...
- Python + Robot Framework 环境搭建
一.Python 安装 说明:由于RIDE是基于python2.x开发,后期未做python3.x兼容,所以这里安装python2.7. 链接: https://pan.baidu.com/s/1yf ...
- PHP生成HTML静态页面。
function Generate(){ $html = '<!DOCTYPE html><html lang="en"><head> < ...
- HTML5 元素文字超出部分显示省略号(支持多行),兼容几乎所有常用浏览器
1,公共样式,在公共的 CSS 文件中加入以下内容 /* 超出部分显示省略号,支持多行 */ .text-ells:before { content: ''; float: left; width: ...