c语言求公约数个数 数组
时间: 2024-10-29 12:05:28 浏览: 7
C语言:最大公约数的函数实现
在C语言中,计算两个整数的最大公约数(Greatest Common Divisor, GCD)通常使用欧几里得算法(Euclidean Algorithm)。然后,为了找出一组数中共有多少对互质(即最大公约数为1的数),你可以遍历数组,对于每一对相邻的数,先计算它们的GCD,再检查这个GCD是否为1。若为1,则表示这对数互质,计数器加一。
以下是一个简单的示例代码,用于计算数组中两两数之间的公约数个数:
```c
#include <stdio.h>
// 计算两个数的最大公约数
int gcd(int a, int b) {
while (b != 0) {
int temp = a % b;
a = b;
b = temp;
}
return a;
}
// 求解数组内所有两两数的公约数个数
int count_pairs_with_gcd_one(int arr[], int n) {
int count = 0;
for (int i = 0; i < n - 1; i++) { // 避免重复计数
for (int j = i + 1; j < n; j++) {
if (gcd(arr[i], arr[j]) == 1) {
count++;
}
}
}
return count;
}
int main() {
int numbers[] = {48, 18, 96, 54};
int num_elements = sizeof(numbers) / sizeof(numbers[0]);
int result = count_pairs_with_gcd_one(numbers, num_elements);
printf("数组中有 %d 对互质的数.\n", result);
return 0;
}
```
在这个例子中,`count_pairs_with_gcd_one()` 函数首先初始化计数器为零,然后通过嵌套循环比较数组中的每一个元素对。如果它们的最大公约数是1,就增加计数。最后返回的就是互质数对的数量。
阅读全文