📌  相关文章
📜  gcd multi num (1)

📅  最后修改于: 2023-12-03 15:00:52.992000             🧑  作者: Mango

求多个数的最大公约数

主题介绍

题目要求我们实现一个函数,能够求出多个整数的最大公约数。那么,什么是最大公约数呢?最大公约数是指多个数中最大的能够整除这些数的整数。例如,6和9的最大公约数是3,而8和12的最大公约数是4。

我们可以通过辗转相除法来求多个数的最大公约数。该算法的具体步骤为:

  1. 对于两个正整数a和b(a>b),它们的最大公约数等于a除以b的余数c和b之间的最大公约数。
  2. 重复步骤1,直到a能够整除b,此时b即为多个数的最大公约数。
程序实现

我们可以先定义一个函数,用来求两个整数的最大公约数。然后,在该函数基础上扩展一个版本,能够求出多个整数的最大公约数。

求两个数的最大公约数
def gcd(a: int, b: int) -> int:
    if a < b:
        a, b = b, a
    while b != 0:
        tmp = b
        b = a % b
        a = tmp
    return a

这里我们使用了Python的类型提示,标明了函数的参数类型和返回值类型。函数中使用了while循环,每次循环时,将a除以b的余数赋值给b,将b的值赋值给a。当b等于0时,a就是两个数的最大公约数。

求多个数的最大公约数
from typing import List

def multi_gcd(nums: List[int]) -> int:
    res = nums[0]
    for num in nums[1:]:
        res = gcd(res, num)
    return res

我们定义了一个multi_gcd函数,它的参数是一个整数列表nums,函数返回值是最大公约数。该函数先将列表中的第一个数赋值给res变量。接着,遍历列表中的其他数,每次调用gcd函数来求当前数和res的最大公约数,将结果赋值给res。最终,res就是多个数的最大公约数。

总结

本文介绍了如何求多个数的最大公约数。我们使用了辗转相除法来实现求最大公约数的函数,使用了Python的类型提示来加强代码的可读性。使用这些技巧,可以使代码更加易读易懂,减少错误的产生。