Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình tìm ước chung lớn nhất của danh sách số trong Python

Cho danh sách nums. Tìm ước chung lớn nhất (GCD) của tất cả các số trong danh sách.

Ví dụ: nums = [15, 81, 78] → kết quả 3 (3 chia hết 15, 81, 78).

Thuật toán giải quyết

  1. Nếu chỉ 1 phần tử: trả về phần tử đó
  2. Tính div = gcd(nums[0], nums[1])
  3. Nếu chỉ 2 phần tử: trả về div
  4. Duyệt từ phần tử thứ 3: div = gcd(div, nums[i])
  5. Nếu div == 1: dừng sớm (UCLN = 1)
  6. Trả về div

Ví dụ minh họa

from math import gcd

def solve(nums):
    if len(nums) == 1:
        return nums[0]
    div = gcd(nums[0], nums[1])
    if len(nums) == 2:
        return div
    for i in range(1, len(nums) - 1):
        div = gcd(div, nums[i + 1])
        if div == 1:
            return div
    return div

nums = [15, 81, 78]
print(solve(nums))

Đầu vào

[15, 81, 78]

Đầu ra

3