找出数组的最大公约数
实例要求
- 1、给定一个整数数组 ,返回数组中最大数和最小数的最大公约数;
- 2、两个数的最大公约数是能够被两个数整除的最大正整数;
- 示例:
实例分析
- 1、要找到数组中最大数和最小数的最大公约数;
- 2、可以使用欧几里德算法;
- 3、这个算法可以用迭代的方式实现;
示例代码
int gcd(int a, int b) {
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
int findGCD(int* nums, int numsSize) {
int minNum = nums[0];
int maxNum = nums[0];
// 找到数组中的最小值和最大值
for (int i = 1; i < numsSize; i++) {
minNum = (nums[i] < minNum) ? nums[i] : minNum;
maxNum = (nums[i] > maxNum) ? nums[i] : maxNum;
}
// 计算最大公约数
return gcd(minNum, maxNum);
}
运行结果