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内核中,内核也是使用这样的方法实现两数最大公约数的计算. 两个整数的最大 ...
随机推荐
- 记账本NABCD分析
学生记账本NABCD分析 N(Need,需求) 随着我们进入大学开始逐步的扩大自己的消费水平,而我们每天无法准确的记住一笔一笔的消费记录.常常,每一个月末时我们在宿舍楼道听到不少学生抱怨这个月怎么花钱 ...
- nginx屏蔽某段IP、某个国家的IP
nginx中可通过写入配置文件的方法来达到一定的过滤IP作用,可使用deny来写. deny的使用方法可用于前端服务器无防护设备的时候过滤一些异常IP,过滤的client ip会被禁止再次访问,起到一 ...
- PHP使用文件锁解决高并发问题示例
新建一个.txt文件,文件中什么都不用写. [一].阻塞(等待)模式:(只要有其他进程已经加锁文件,当前进程会一直等其他进程解锁文件) <?php //连接数据库 $con=mysqli_con ...
- 十七、springcloud(三)服务的注册与调用
1.启动服务注册中心Eureka(见上篇) 启动成功后,暂时无服务 2.项目框架 3.创建服务提供者(spring-cloud-houge-provider)jar a.application.pro ...
- spi、iic、can高速传输速度与选择
uart: 无限制,常用9600.115200bps等保证双方通信速度相同. iic: 通讯速率400Kbps can: 一般为1Mbps SPI: 通信速率 fosc/4其传输速度可达几Mb/s 缺 ...
- 物化视图SQL
物化视图SQL,如果没有结果集,就证明数据库中不存在物化视图 select a.owner,'' column_name,a.table_name,b.segment_name,b.segment_t ...
- PAT 乙级1093 字符串A+B (20 分)
1093 字符串A+B (20 分) 给定两个字符串 A 和 B,本题要求你输出 A+B,即两个字符串的并集.要求先输出 A,再输出 B,但重复的字符必须被剔除. 输入格式: 输入在两行中分别给出 A ...
- 读取Excel的部分问题
1.office分很多版本,导致Excel连接字符串不同. 2.是否有标题头的问题(在连接字符串中设置) 3.Excel本身删除分数据删除和表格结构删除.普通delete只能删除数据, 还是能读取到表 ...
- 6.3.4 新的_Bool类型
如果把其他非零数值赋给_Bool类型的变量,该变量会被设置为1.这反映了C把所有的非零值都视为真. input_is_good = (scanf("%ld", &num) ...
- [UE4]Button
一.按钮有4种状态:Normal(普通状态).Hovered(鼠标悬停状态).Pressed(鼠标按下状态).Disabled(禁用状态),可以分别给每种状态设置样式. 二.按钮有如图所示的5个事件, ...