python求三位数的最大公约数和最小公倍数(3种算法)
一、穷举法求最大公约数
可以利用循环穷举的方法,看是否能整除这三个数。若能整除这三个数,则输出其中的最小的数即为最小公倍数。
代码如下:
def Sort_xyz(x,y,z,):l = [x,y,z]l.sort()return l def Gcd(x,y,z):x,y,z = Sort_xyz(x,y,z)for i in range(1,z + 1):if x % i == 0 and y % i == 0 and z % i == 0:gcd = ireturn gcd
二、辗转相除法
又名欧几里德算法,用较小数除较大数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。 求三个数时先算出两个数的最大公约数,然后用这个数与第三个数求最大公约数,所得数字即为最大公约数
代码如下
#将三个数由小到大排列
def Sort_xyz(x,y,z,):l = [x,y,z]l.sort()return l def Gcd(x,y,z):x,y,z = Sort_xyz(x,y,z) while y != 0:temp = yy = x % yx = temp if x < z:temp = x x = z z = tempwhile z != 0:temp = zz = x % zx = tempreturn x
三、辗转相减法
即尼考曼彻斯法。例如 :两个自然数35和14,用大数减去小数,35-14=21,21-14=7,此时,7小于14,要做一次交换,把14作为被减数,即14-7=7,再做一次相减,结果为0,这样也就求出了最大公约数7。
代码如下:
#将三个数由小到大排列
def Sort_xyz(x,y,z,):l = [x,y,z]l.sort()return l def Gcd3(x,y,z):x,y,z = Sort_xyz(x,y,z) while x != y :if x > y:x = x - yelse:y = y - xif y < z:temp = y y = z z = temp while y != z :if y > z:y = y - zelse:z = z - yreturn z
四、穷举法求最小公倍数
先求出三个数中最大的一个数max,用max乘以1,2,3,4........
当max*n%num1==0 and max*n%num2==0 and max*n%num3==0
这时max*n即最小公倍数
代码如下:
#将三个数由小到大排列
def Sort_xyz(x,y,z,):l = [x,y,z]l.sort()return l def Lcm1(x,y,z):x,y,z = Sort_xyz(x,y,z)i = 1j = 0while True:j = x * i if j%x==0 and j%y==0 and j%z==0:breaki += 1return j
五、短除法求最小公倍数
最小公倍数=为2*5*2=20
计算三个数时先求出两个数的最小公倍数,在和另一个数求最小公倍数
代码如下:
#将三个数排列
def Sort_xyz(x,y,z,):l = [x,y,z]l.sort()return l def Lcm2(x,y,z):lcm = 1k = max(x,y,z)for i in range(2,x+1):#对循环是否结束进行标记flag = Truewhile flag:flag = Falseif x % i == 0:x = x / iflag = Trueif y % i == 0:y = y / iflag = Trueif z % i == 0:z = z / iflag = Trueif flag:lcm *= i k = max(x,y,z)return lcm
六、公式法
由于两个数的乘积等于这两个数的最大公约数与最小公倍数的积。即(a,b)×[a,b]=a×b。所以,求两个数的最小公倍数,就可以先求出它们的最大公约数,然后用上述公式求出它们的最小公倍数。
代码如下:
def Lcm3(x,y,z):gcd = Gcd(x,y)lcm = (x*y)/gcdgcd = Gcd(lcm,z)lcm = (lcm*z)/gcdreturn lcm
python求三位数的最大公约数和最小公倍数(3种算法)相关推荐
- python求两数最大公因数_『用python求俩个数的最大公约数和最小公倍数』
python:用递归的方法编写一个函数gys(x,y),计算两个数字的最大公约数. (提示,大的 def gys(x,y): a,b=max(x,y),min(x,y) c=a%b if c==0: ...
- 三种算法求两个正整数的最大公约数和最小公倍数;求三个数的最大公约数和最小公倍数
第二次作业 题目:求两个正整数的最大公约数和最小公倍数. 基本要求:1.程序风格良好(使用自定义注释模板),两种以上算法解决最大公约数问题,提供友好的输入输出. 提高要求:1.三种以上算法解决两个正整 ...
- 求三个数的最大公约数和最小公倍数
题目:求两个正整数的最大公约数和最小公倍数. 基本要求:1.程序风格良好(使用自定义注释模板),两种以上算法解决最大公约数问题,提供友好的输入输出. 提高要求:1.三种以上算法解决两个正整数最大公约数 ...
- Python求一组数字的最大公约数和最小公倍数
一.先来看求最大公约数 1).利用gcd函数 math库里面有个gcd函数能直接求出两个数字的最大公约数,遇到求一组数字的最大公约数的时候,加一个循环就好,如下: import math def gc ...
- java程序:求三个数的最大公约数和最小公倍数
import java.util.ArrayList; import java.util.List; import java.util.Scanner; /**main方法用于测试结果**/publi ...
- python求两个数的最大公约数和最小公倍数_Python求两个数最大公约数、最小公倍数...
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- python数字组合算法_python - 简单算法题 - 求三位数组合
求三位数组合 lst = [3, 6, 2, 7] 这四个数字能组成多少个互不相同且无重复数字的三位数?比如362算一个,326算一个,请逐个输出他们 思路分析 从4个数里面取3个数,且不重复,然后进 ...
- 求N个数的最大公约数和最小公倍数以及Hankson逆问题(python)
求N个数的最大公约数和最小公倍数以及Hankson"逆问题"(python) 一.题目要求 1.基本要求: 求N个数的最大公约数和最小公倍数.用C或C++或java或python语 ...
- python求两个数的最大公约数穷举法_五十九、如何求N个数的最大公约数和最小公倍数...
「@Author:Runsen」 ❝ 编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题进行代码化.「---- Runsen」 ❞ 上次介绍了短除法的因式分解,下面正式进入求解:「两个及 ...
最新文章
- php和架构,结构和架构的区别是什么?
- mysql整理碎片和显示语句错误
- 从java到c_怎样快速的从 Java 转到 C ?
- android 命令行创建模拟器,在命令行创建、删除和浏览AVD、使用android模拟器
- Android常见控件— — —EditText
- Acwing第 15 场周赛【未完结】
- python leetcode_LeetCode刷题——第8天(python)
- 倒数日怎么设置起始日_起始价131亿!杭州江河汇流区85万方综合体招标延期
- pyltp在ubuntu20.04下面的安装办法
- 一些顿悟,和新的开始!
- 源码安装mysql数据库_Linux下源码安装mysql数据库
- defconfig、 .config
- python爬酷狗音乐_良心推荐!一个Python高手必读的库,真香!
- 盾神与砝码称重java_[蓝桥杯][算法提高VIP]盾神与砝码称重-题解(Java代码)
- 如果可以再读一次研究生
- Linux符号连接的层数过多
- Axis2 生成客户端
- HDUOJ-------1753大明A+B(大数之小数加法)
- thread/threading——Python多线程入门笔记
- mysql语句解析_MYSQL中SQL执行分析
热门文章
- A. Equalize Prices Again
- js实现微信禁止h5网页下拉,禁止微信h5页面默认下拉
- APP第三方安全检测
- 日撸代码300行:第二天
- ubuntu 8000端口被占用
- 网络编程之端口:端口号为什么常见是8000、8080、8888...
- 【Linux】Linux关闭防火墙、关机重启和查看系统运行级别
- 云原生可观测性平台-云监控
- python ppt自动生成_实战 | Python自动生成PPT调研报告
- Heart Rate Variability Analysis with the HRV Toolkit: Basic Time and Frequency Domain Measures