参考:
https://www.cnblogs.com/yxym2016/p/12969067.html
https://blog.csdn.net/weixin_43846904/article/details/112999660

1、暴力求解

已知两个数a,b,i 从1遍历到min(a,b),判断 i 是不是a,b的因数,在遍历过程中找到最大的因数,即为最大公因数。

def gcd(a,b):num = 1for i in range(2,min(a,b)+1):if a%i==0 and b%i==0:num = ireturn numa = int(input('input number a:'))
b = int(input('input number b:'))
print("最大公约数为:",gcd(a,b))

2、辗转相除法

辗转相除法是求两个自然数的最大公约数的一种方法,也叫欧几里德算法。

对于任意给定的两个自然数,假设a>b,
判断b是否为0:如果为0,则最大公约数直接就是a;如果不为0,就将两个整数a与b进行相除。
如果余数为0(a%b==0),则b为两数的最大公约数;如果不等于0,则将b赋值给a,将余数赋值给b,再对新的a、b进行递归运算求最大公约数。
递归的结束条件就是b==0。

def gcd(a,b):if a==b:return bif a<b:tmp = bb = aa = tmpif b==0:return aelse:num = a%bif num==0:return belse:a = bb = numreturn gcd(a,b)a = int(input('a='))
b = int(input('b='))
print('最大公约数为:',gcd(a,b))

3、更相减损法

这个思想起源于我国古代的《九章算术》。

对于任意给定的两个正整数a、b,要求出他们的最大公约数,首先判断他们俩是否都是偶数(能被2整除),如果都是偶数则一直除以2约简,直至不能再被2整除;

如果不是,则用较大的数减去较小的数,然后将所得的差值赋值给原先拥有较大值的那个变量,再拿这个变量与较小值的那个变量进行比较,继续用二者中较大的减去较小的,直到两个变量相等;

最后,将第一步约简掉的2依次乘以第二步得到的“等数”就是最大公约数。

def gcd(a,b):ggcd = 1num = 0 # 公因数2的数量# 是否偶数,除以2while a%2==0 and b%2==0:a = a/2b = b/2num+=1# 找“等数”while a!=b:tmp = max(a,b)-min(a,b)b = min(a,b)a = tmp# 求最大公因数ggcd = afor i in range(0,num):ggcd*=2return int(ggcd)a = int(input('a='))
b = int(input('b='))
print('最大公约数为:',gcd(a,b))

python学习——如何求最大公约数相关推荐

  1. python3简明教程-实验楼_#python实验楼教程#学Python哪里有一问一答的Python学习?求具体的~...

    学Python哪里有一问一答的Python学习?求具体的- 实的会员课程 慕课网 实验楼是IT在线学习网站,为用户提供的不频,而是配置好的虚拟机,通过虚拟的实验环境,学习者可边看文档边动手操作,从而提 ...

  2. 最大公约数和最小公倍数python代码_python求最大公约数和最小公倍数的简单方法...

    python怎么求最大公约数和最小公倍数 一.求最大公约数 用辗转相除法求最大公约数的算法如下: 两个正整数a和b(a>b),它们的最大公约数等于a除以b的余数c和b之间的最大公约数.比如10和 ...

  3. python实现辗转相除法求最大公约数和最小公倍数

    辗转相除法数学原理 辗转相除法也称欧几里得算法,是用来求两个正整数的最大公约数的算法.接下来我们用实例来解释一下.假如我们需要求12和21的最大公约数,用辗转相除法是这样实现的: 21 / 12 = ...

  4. Python 学习笔记——求余数操作符 % 在数学计算中的应用-try_006_02

    今天做完这个习题后发现,原来学好编程可以用来解决一些数学上刁钻的难题,例如下题: 爱因斯坦的难题-- 爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶:若每步上3阶,最后剩2 ...

  5. Python学习之---求100以内素数的八种解法

    题目: 求100以内所有的素数和个数 延伸:任意范围内的素数和前N个素数的和. 定义 何为素数?素数(又称为质数)就是在所有比1大的整数中,除了1和它本身以外,不再有别的因数,这种整数叫做质数.还可以 ...

  6. PYTHON语言编写求最大公约数和最小公倍数的程序(更相减损法)

    #更相减损术求GCD.py x,y=eval(input("请输入一个整数:")) t1,t2=x,y while True:a=abs(x-y)if a==min(x,y):br ...

  7. python用辗转相除法求最大公约数

    辗转相除法: (1)比较两数,并使m>n (2)将m作被除数,n做除数,相除后余数为r (3)循环判断r,若r==0,则n为最大公约数,结束循环.若r !=0 ,执行m=n,n=r:将m作被除数 ...

  8. Python学习之求绝对值的几种方法

    import mathdef abs_value1():a = float(input('1.请输入一个数字:'))if a >= 0:a = aelse:a = -aprint('绝对值为:% ...

  9. python计算最大公约数和最小公倍数_python怎么求最大公约数和最小公倍数

    python怎么求最大公约数和最小公倍数 一.求最大公约数 用辗转相除法求最大公约数的算法如下: 两个正整数a和b(a>b),它们的最大公约数等于a除以b的余数c和b之间的最大公约数.比如10和 ...

最新文章

  1. 东汉末年,他们把「服务雪崩」玩到了极致(干货)
  2. 程序员面试题精选100题(45)-Singleton(C/C++/C#)
  3. Windows Phone 开发起步之旅之二 C#中的值类型和引用类型
  4. 设计模式 之 工厂模式
  5. java如何连接mysql_Java如何连接数据库
  6. 清除浮动的最佳方案:clearfix
  7. java实体类的功能_(转载) java实体类的作用
  8. http常见的get请求方式和set请求方式。
  9. Eclipse 隐藏已关闭的项目
  10. 天津商业大学C语言题库,天津商业大学c语言机考改错及解答(含答案)解析.doc
  11. python入门经典-Python入门经典
  12. 《Java并发编程实践》学习笔记之二:线程安全性(thread-safe)
  13. Oracle递归sql
  14. R语言安装包失败方案及DataExplorer包安装方法实践
  15. Unity Animator人物模型动画移动偏移
  16. DSP28335 eCAP 测频
  17. 流程图设计教程和参考样例
  18. 欧姆龙CP/CJ系列PLC以太网通讯方案
  19. PowerBI数据处理-聚合
  20. AMBA总线协议之AHB学习记录(1)—ahb_bus(附verilog代码)

热门文章

  1. django重置密码发送html邮件,django 开发忘记密码通过邮箱找回功能示例
  2. linux c语言 cmos,c语言编写程序读写CMOS内容
  3. 循环世界模型(Recurrent World Models)——真实世界建模的强化学习利器
  4. 如意人生守护·典藏版:论赔付力度,这款产品是碾压级的!
  5. SpringBoot的controller为什么不能并行执行?同一个浏览器连续多次访问同一个url竟然是串行的?- 第329篇
  6. #今日论文推荐# 陈天奇、王威廉等人推荐:ACL最佳论文奖得主给新入行研究者的一点建议
  7. Note: Bimodal Content Defined Chunking for Backup Streams
  8. 【转】外连接&全连接的区别
  9. 自适应阈值(adaptiveThreshold)分割原理及实现
  10. JDK安装和环境变量配置(Win10图文详解)