给你一个整数数组 nums
,返回数组中最大数和最小数的 最大公约数 。
两个数的 最大公约数 是能够被两个数整除的最大正整数。
示例 1:
输入:nums = [2,5,6,9,10] 输出:2 解释: nums 中最小的数是 2 nums 中最大的数是 10 2 和 10 的最大公约数是 2
示例 2:
输入:nums = [7,5,6,8,3] 输出:1 解释: nums 中最小的数是 3 nums 中最大的数是 8 3 和 8 的最大公约数是 1
示例 3:
输入:nums = [3,3] 输出:3 解释: nums 中最小的数是 3 nums 中最大的数是 3 3 和 3 的最大公约数是 3
from typing import List
class Solution:
def findGCD(self, nums: List[int]) -> int:
nums.sort()
a, b = nums[0], nums[-1]
if a == 0:
return b # 如果最小值为0,返回最大值(因为GCD(0, b) = b)
if b % a == 0:
return a
i = a - 1
while i >= 1:
if a % i == 0 and b % i == 0:
return i
i -= 1
return 1 # 如果没有找到更大的公约数,返回1