📌  相关文章
📜  QA – 安置测验|数字、LCM 和 HCF |问题 12(1)

📅  最后修改于: 2023-12-03 14:46:49.266000             🧑  作者: Mango

QA – 安置测验|数字、LCM 和 HCF |问题 12

问题描述

给定 $n$ 个正整数,找到它们的 HCF(最大公因数)的平方。

输入格式

第一行包含一个整数 $n$,表示给定的正整数的数量。

第二行包含 $n$ 个整数,表示给定的正整数。

输出格式

输出一个整数,表示给定的正整数的 HCF 的平方。

样例输入
4
2 4 6 8
样例输出
4
解释

输入样例中,2、4、6 和 8 的 HCF 是 2。因此,它们的 HCF 的平方是 4。

实现思路

我们可以使用辗转相除法(欧几里得算法)来计算最大公因数(HCF)。使用此算法,我们先找到两个数的余数,直到余数变为零。此时,我们可以得到最大公因数。

然后,我们可以再次使用相同的方法来计算所有数字的 HCF。我们将所有数字一一枚举,然后将两个数字的 HCF 作为下一次枚举的两个数字,直到我们遍历完所有数字。这样,我们就可以找到所有数字的 HCF。

最后,我们将 HCF 的值平方,并将结果返回。

代码实现
def find_hcf(num1: int, num2: int) -> int:
    if num2 == 0:
        return num1
    else:
        return find_hcf(num2, num1 % num2)

n = int(input())
arr = list(map(int, input().split()))

hcf = arr[0]
for i in range(1, n):
    hcf = find_hcf(hcf, arr[i])

print(hcf ** 2)

此代码片段包括一个名为 find_hcf 的函数,该函数计算两个数字的 HCF,并返回相应的值。然后,我们在主函数中使用 find_hcf 函数来计算所有数字的 HCF,并返回其平方值。

代码使用 Python 语言编写,可以在任何 Python 环境中运行。输入和输出都是标准的控制台输入和输出。