脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - python辗转相除法求最大公约数和最小公倍数的实现

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

2022-07-16 14:04阿松丶 Python

这篇文章主要介绍了python辗转相除法求最大公约数和最小公倍数的实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

辗转相除法求最大公约数和最小公倍数

辗转相除法数学原理

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

?
1
2
3
21 / 12 = 1 (余 9
12 / 9 = 1(余 3
9 / 3 = 3 (余 0

至此,得到21与12的最大公约数为3(注意:这里的3是第二个式子取余得到的3,而非最后一个式子相除得到的),然后把两个数相乘再除以最大公约数就可以得到最小公倍数:(21*12)/ 3 = 84

python代码实现

接下来我们用python代码来实现这样一道题目:

题目:输入两个正整数,求其最大公约数和最小公倍数。

?
1
2
3
4
5
6
7
8
9
10
11
12
def func(m,n):
    a = m
    b = n
    # 默认m>n,若不是,则交换
    if m < n:
        m,n = n,m
    while n != 0:
        # 对m除n取余
        r = m % n
        m = n
        n = r
    return m,(a*b)/m

print("正整数m与n的最大公约数与最小公倍数分别为:",func(12,21))

正整数m与n的最大公约数与最小公倍数分别为: (3, 84.0)

用递归的方式实现

?
1
2
3
4
5
6
7
8
9
10
11
12
def rec(m,n):
    # 默认m>n,若不是,则交换
    if m < n:
        m,n = n,m
    # 终止条件    
    if n == 0:
        return m,(a*b)/m
    # 递归部分
    return rec(n,m%n)
 
a = 12
b = 21

print("正整数m与n的最大公约数与最小公倍数分别为:",rec(12,21))

正整数m与n的最大公约数与最小公倍数分别为: (3, 84.0)

Python3 20.辗转相除法

算法分析

1.算法定义为:在有限的步骤内解决数学问题的程序,即为了解决某项工作或某个问题,所需要有限数量的机械性或重复性指令与计算步骤。

2.最大公约数:可整除两个整数的最大整数。

3.用两个数中较大的整数除以较小的数,求得商和余数。

源代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# coding:gbk
Num_1 = int(input("请输入一个整数: "))
Num_2 = int(input("请输入一个整数: "))
 
if Num_1 < Num_2:
    Tmp_Num = Num_1       # 是交换而不是赋值
    Num_1 = Num_2
    Num_2 = Tmp_Num
 
while Num_2 != 0:
    Tmp_Num = Num_1 % Num_2
    Num_1 = Num_2
    Num_2 = Tmp_Num
 
print('输出这两个整数的最大公约数:', Num_1)

结果截图


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

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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/qq_34184505/article/details/116793161

延伸 · 阅读

精彩推荐
  • Python利用python实现命令行有道词典的方法示例

    利用python实现命令行有道词典的方法示例

    平常都是用终端敲, 有时候不会的词语也懒得打开词典了,干脆搞了个简单的查词命令。下面这篇文章主要给大家介绍了利用python实现命令行有道词典的方...

    PegasusWang5142020-09-19
  • PythonPython实现的爬虫功能代码

    Python实现的爬虫功能代码

    这篇文章主要介绍了Python实现的爬虫功能,涉及Python使用urllib2、BeautifulSoup模块实现网页源码的获取、解析等相关操作技巧,需要的朋友可以参考下...

    北京流浪儿4272020-11-20
  • Pythonpython SMTP实现发送带附件电子邮件

    python SMTP实现发送带附件电子邮件

    这篇文章主要为大家详细介绍了python SMTP实现发送带附件电子邮件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    alaska113111402021-02-23
  • PythonPython RabbitMQ消息队列实现rpc

    Python RabbitMQ消息队列实现rpc

    这篇文章主要介绍了python 之rabbitmq实现rpc,主要实现客户端通过发送命令来调用服务端的某些服务,服务端把结果再返回给客户端,感兴趣的小伙伴们可以参...

    dugufei7842021-02-26
  • PythonPython实现信息轰炸工具(再也不怕说不过别人了)

    Python实现信息轰炸工具(再也不怕说不过别人了)

    不知道各位小伙伴有没有遇到过这样的一个故事,发现自己直接喷不过,打字速度不够给力.下面这篇文章就能解决自己喷不过的苦恼,话不多说,上才艺,需要的...

    韶光不负10912021-11-30
  • PythonPycharm以root权限运行脚本的方法

    Pycharm以root权限运行脚本的方法

    今天小编就为大家分享一篇Pycharm以root权限运行脚本的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    ShichimiyaSatone6572021-05-18
  • Python详解分布式任务队列Celery使用说明

    详解分布式任务队列Celery使用说明

    这篇文章主要介绍了详解分布式任务队列Celery使用说明,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    栖迟于一丘11982021-04-23
  • PythonPython生成器generator用法示例

    Python生成器generator用法示例

    这篇文章主要介绍了Python生成器generator用法,结合实例形式分析了Python生成器generator常见操作技巧与相关注意事项,需要的朋友可以参考下...

    喷跑的豆子6562021-03-27