📅  最后修改于: 2023-12-03 15:40:33.909000             🧑  作者: Mango
在数学中,如果两个数的最大公约数为1,则它们被称为互质。给定一个整数数组,编写一个函数来检查所有数组元素是否成对互质。
可以利用欧几里得算法来求两个数的最大公约数。找到数组中所有元素相互之间的最大公约数,如果它们都为1,则它们是成对互质的。
def gcd(a, b):
if b == 0:
return a
else:
return gcd(b, a % b)
def are_elements_coprime(arr):
n = len(arr)
for i in range(n):
for j in range(i+1, n):
if gcd(arr[i], arr[j]) != 1:
return False
return True
上述代码使用了递归的欧几里得算法来求解最大公约数。are_elements_coprime
函数使用两个嵌套的循环来遍历数组中的所有元素,并检查它们之间的最大公约数是否为1。最后,函数返回一个布尔值,表示数组中的所有元素是否成对互质。
以下是用于测试 are_elements_coprime
函数的几个样例。
assert are_elements_coprime([3, 5, 7, 11, 13]) == True
assert are_elements_coprime([4, 6, 8, 10, 12]) == False
assert are_elements_coprime([2, 3, 5, 7, 11]) == True
assert are_elements_coprime([6, 15, 35]) == False
assert are_elements_coprime([2, 9, 11, 13, 15]) == False
第一个样例中,所有整数都是质数,它们之间的最大公约数永远为1,因此函数返回True。第二个样例中,每个整数都可以被2整除,因此它们之间不可能是互质的,函数返回False。其他样例按照同样的逻辑进行测试且结果正确。
上述代码提供了一种检查数组中所有元素是否成对互质的方法。使用这个函数可以很容易地检查给定数组中的所有元素是否成对互质,并根据结果进行进一步操作。