菜鸟教程 -- 学的不仅是技术,更是梦想!

Python 3 教程
Python3 教程 Python3 简介 Python3 环境搭建 Python3 VScode Python3 基础语法 Python3 基本数据类型 Python3 数据类型转换 Python3 解释器 Python3 注释 Python3 运算符 Python3 数字(Number) Python3 字符串 Python3 列表 Python3 元组 Python3 字典 Python3 集合 Python3 条件控制 Python3 循环语句 Python3 编程第一步 Python3 推导式 Python3 迭代器与生成器 Python3 with Python3 函数 Python3 lambda Python3 装饰器 Python3 数据结构 Python3 模块 Python __name__ Python3 输入和输出 Python3 File Python3 OS Python3 错误和异常 Python3 面向对象 Python3 命名空间/作用域 Python 虚拟环境的创建 Python 类型注解 Python3 标准库概览 Python3 实例 Python 测验

Python3 高级教程

Python3 正则表达式 Python3 CGI编程 Python3 MySQL(mysql-connector) Python3 MySQL(PyMySQL) Python3 网络编程 Python3 SMTP发送邮件 Python3 多线程 Python3 XML 解析 Python3 JSON Python3 日期和时间 Python3 内置函数 Python3 MongoDB Python3 urllib Python uWSGI 安装配置 Python3 pip Python3 operator Python math Python requests Python random Python OpenAI Python 有用的资源 Python AI 绘画 Python statistics Python hashlib Python 量化 Python pyecharts Python selenium 库 Python 爬虫 Python Scrapy 库 Python Markdown Python sys 模块 Python Pickle 模块 Python subprocess 模块 Python queue 模块 Python StringIO 模块 Python logging 模块 Python datetime 模块 Python re 模块 Python csv 模块 Python threading 模块 Python asyncio 模块 Python PyQt Python for 循环 Python while 循环
(追記) (追記ここまで)

Python 最小公倍数算法

Document 对象参考手册 Python3 实例

以下代码用于实现最小公倍数算法:

实例(Python 3.0+)

# Filename : test.py# author by : www.runoob.com# 定义函数deflcm(x, y): # 获取最大的数ifx > y: greater = xelse: greater = ywhile(True): if((greater % x == 0)and(greater % y == 0)): lcm = greaterbreakgreater += 1returnlcm# 获取用户输入num1 = int(input("输入第一个数字: "))num2 = int(input("输入第二个数字: "))print(num1,"", num2,"的最小公倍数为", lcm(num1, num2))

执行以上代码输出结果为:

输入第一个数字: 54
输入第二个数字: 24
54 和 24 的最小公倍数为 216

Document 对象参考手册 Python3 实例

AI 思考中...

11 篇笔记 写笔记

  1. #0

    HaydnLiao

    Hay***[email protected]

    57

    按以下思路可减少循环次数:

    1.当最大值为最小公倍数时,返回最大值;

    2.当最大值不为最小公倍数时,最小公倍数为最大值的倍数。

    实例:

    # 最小公倍数
    def lcm(a, b):
     if b > a:
     a, b = b, a # a为最大值
     if a % b == 0:
     return a # 判断a是否为最小公倍数
     mul = 2 # 最小公倍数为最大值的倍数
     while a*mul % b != 0:
     mul += 1
     return a*mul
    while(True):
     a = int(input("Input 'a':"))
     b = int(input("Input 'b':"))
     print(lcm(a, b))

    HaydnLiao

    Hay***[email protected]

    9年前 (2017年07月02日)
  2. #0

    Joshua

    cos***[email protected]

    22

    参考方法:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    def lcm(x, y): # very fast
     s = x*y
     while y: x, y = y, x%y
     return s//x
    print(lcm(120, 123)) #result: 4920
    

    Joshua

    cos***[email protected]

    9年前 (2017年07月19日)
  3. #0

    旅行的意义

    101***[email protected]

    12

    利用最大公约数,最小公倍数等于两个数的乘积除以最大公约数:

    def my_lcm():
     n1 = int(input('请输入一个正整数:'))
     n2 = int(input('请输入另一个正整数:'))
     temp1 = n1
     temp2 = n2
     if n1 == 0:
     n1, n2 = n2, n1
     while n2 != 0:
     n1, n2 = n2, n1 % n2
     return int(temp1 * temp2 / n1)
    print(my_lcm())

    旅行的意义

    101***[email protected]

    9年前 (2018年02月05日)
  4. #0

    黄桃果捞

    zhe***[email protected]

    3

    可以借用前一个实例中求取最小公约数的代码来实现求解两个整数的最大公倍数,代码如下:

    #!/usr/bin/python3
    # -*- coding: UTF-8 -*-
    # find the Least Common Multiple of two integer
    def find_GCD(x, y):
     find_GCD = y
     while (x % y) != 0:
     find_GCD = x % y
     x, y = y, find_GCD
     return find_GCD
    def find_LCM(x,y):
     return int(x * y / find_GCD(x, y))
    int1 = int(input('Input 1st integer: '))
    int2 = int(input('Input 2nd integer: '))
    print('The least common multiple of {} and {} is {}'.format(int1, int2, find_LCM(int1, int2)))

    代码运行结果如下:

    Input 1st integer: 54
    Input 2nd integer: 24
    The least common multiple of 54 and 24 is 216

    黄桃果捞

    zhe***[email protected]

    8年前 (2018年03月20日)
  5. #0

    星空中的鱼

    357***[email protected]

    8

    你这个实例的效率太慢了,这样写效率高些。

    def lcm(X,Y):
     count=1;
     if X > Y:
     sample=X
     else:
     sample=Y
     while True:
     lcm=sample*count
     if (lcm % X ==0)and( lcm % Y ==0):
     return lcm
     else:
     count+=1

    星空中的鱼

    357***[email protected]

    8年前 (2018年04月16日)
  6. #0
    5

    使用 for 的方法:

    def lcm(x,y):
     if x>y:
     greater = x
     else:
     greater = y
     for i in range(greater,x*y+1,1):
     if(i%x==0) and (i%y==0):
     lcm = i
     break
     return lcm 
    num1 = int(input('输入第一个数字:'))
    num2 = int(input('输入第二个数字:'))
    print(num1,'和',num2,'的最小公倍数为',lcm(num1,num2))
    8年前 (2018年06月12日)
  7. #0

    桃之夭夭

    956***[email protected]

    4

    求两个数之间的最小公倍数相对简单,用两个数的乘积对两个之间的最大公约数求商即可:

    def gcd(a,b):
     while (a!=0) & (b!=0):
     a,b = b,a%b
     return a
    c = int(input('请输入第一个正整数: '))
    d = int(input('请输入第一个正整数: '))
    print('{}和{}的最小公倍数为: {}'.format(c,d,(c*d)//gcd(c,d)))

    桃之夭夭

    956***[email protected]

    8年前 (2018年06月28日)
  8. #0

    Alex

    934***[email protected]

    14

    使用 math 模块的 gcd():

    import math
    a = 54
    b = 24
    print(a*b/math.gcd(a,b))

    输出结果为:

    216.0

    Alex

    934***[email protected]

    8年前 (2018年11月12日)
  9. #0

    慕容君少

    shu***[email protected]

    6

    参考方法:

    # 继续用我最爱的 filter 刷起来
    while True:
     try:
     n1=int(input('请输入第一个正整数: '))
     n2=int(input('请输入第一个正整数: '))
     L1=list(filter(lambda x:x%n1==0,range(n1,n1*n2+1)))
     L2=list(filter(lambda x:x%n2==0,range(n2,n1*n2+1)))
     L=list(filter(lambda x:x in L2,L1))
     print('{0}最小公倍数为{1}'.format((n1,n2),min(L)))
     break
     except ValueError:
     print('请输入正整数')

    慕容君少

    shu***[email protected]

    8年前 (2018年11月22日)
  10. #0

    面向天依编程

    145***[email protected]

    5

    乘法解决:两个数分别取自己的乘积,直到相等。

    lis = [int(input('输入数字1:')), int(input('输入数字2:'))]
    a = b = 1
    c, d = 0, 1
    while True:
     if c < d:
     a += 1
     c = min(lis) * a
     elif c > d:
     b += 1
     d = max(lis) * b
     elif c == d:
     print('最小公倍数: %d'%c)
     break
    

    除法解决:较大数取乘积,直到可被较小数整除时(反之亦可)

    lis = [int(input('输入数字1:')), int(input('输入数字2:'))]
    a = b = 1
    while True:
     if a % min(lis) == 0:
     print('最小公倍数: %d' % a)
     break
     b += 1
     a = max(lis) * b

    面向天依编程

    145***[email protected]

    7年前 (2019年12月26日)
  11. #0

    不是TheShy是Rookie

    501***[email protected]

    0

    可以直接用math.lcm()方法:

    import math
    def T1(a,b):
     print(f"{a}与{b}的最小公倍数为:")
     a,b =max(a,b),min(a,b)
     c = 1
     while True:
     if (a*c) % b == 0:
     print(a*c)
     break
     c += 1
    def T2(a,b):
     c = math.lcm(a,b)
     print(f"{a}与{b}的最小公倍数为:{c}")
    if __name__ == "__main__":
     T1(100,42)
     T2(100,42)

    输出结果为:

    100与42的最小公倍数为:
    2100
    100与42的最小公倍数为:2100

    不是TheShy是Rookie

    501***[email protected]

    3年前 (2023年09月05日)

点我分享笔记

  • 昵称 (必填)
  • 邮箱 (必填)
  • 引用地址

AltStyle によって変換されたページ (->オリジナル) /