多个数的最大公因数c++(正负数)
时间: 2023-12-03 19:39:58 浏览: 235
要找到多个数的最大公因数,可以使用欧几里德算法(辗转相除法)。欧几里德算法是通过不断取余数的方式来求解最大公因数。
以下是使用C++编写的一个函数,可以计算多个数的最大公因数:
```cpp
#include <iostream>
// 辗转相除法求最大公因数
int gcd(int a, int b) {
if (a == 0)
return b;
return gcd(b % a, a);
}
// 计算多个数的最大公因数
int gcdMultiple(int arr[], int n) {
int result = arr[0];
for (int i = 1; i < n; i++) {
result = gcd(arr[i], result);
if (result == 1) // 如果已经变成1,没有必要继续计算
return 1;
}
return result;
}
int main() {
int arr[] = {12, 18, 24}; // 示例输入
int n = sizeof(arr) / sizeof(arr[0]);
int result = gcdMultiple(arr, n);
std::cout << "最大公因数是:" << result << std::endl;
return 0;
}
```
在上面的示例中,我们定义了两个函数:`gcd` 和 `gcdMultiple`。`gcd` 函数用于计算两个数的最大公因数,而 `gcdMultiple` 函数则使用 `gcd` 函数来计算多个数的最大公因数。
在 `main` 函数中,我们定义了一个整数数组 `arr` 来存储要计算的数值。然后,我们使用 `gcdMultiple` 函数来计算这些数的最大公因数,并将结果输出。
注意:为了处理负数的情况,可以在计算最大公因数之前,先将所有数取绝对值即可。
阅读全文