Python实现辗转相除法求最大公约数与最小公倍数

清欢
清欢
发布时间:2026-10-15| 4人浏览过
原创

本文详细介绍利用Python实现辗转相除法(欧几里得算法)求解两个正整数的最大公约数和最小公倍数。内容涵盖算法数学原理、迭代与递归两种代码实现方式,以及交互式输入输出的完整示例,帮助开发者快速掌握相关编程技巧。

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

辗转相除法数学原理

辗转相除法,也被称为欧几里得算法,是一种用于计算两个正整数最大公约数的经典算法。为了便于理解,我们通过具体实例进行说明。例如,计算12和21的最大公约数,其计算过程如下:

21 / 12 = 1 (余 9)
12 / 9 = 1(余 3)
9 / 3 = 3 (余 0)

通过上述步骤,我们得出21与12的最大公约数为3。需要注意的是,这里的3来源于第二个式子中的余数,而非最后一个式子的商。得到最大公约数后,计算最小公倍数的公式为:两数之积除以最大公约数,即(21 * 12)/ 3 = 84。

Python代码实现

下面我们将使用Python代码来实现上述计算逻辑:

题目要求:输入两个正整数,并计算它们的最大公约数和最小公倍数。

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)

使用递归方式实现

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. 计算步骤:用两个数中较大的整数除以较小的整数,得到商和余数。

源代码

# 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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。