C语言算法设计穷举法求亲密数对代码
时间: 2024-09-09 13:01:00 浏览: 52
在C语言中,穷举法是一种基本的搜索策略,常用于解决一些特定的问题,比如寻找两个数字之间的最大公约数(GCD),或者在这个例子中寻找一对整数,它们的乘积等于给定的目标值(亲密数对)。下面是一个简单的穷举法求解亲密数对的示例代码:
```c
#include <stdio.h>
// 计算最大公约数的欧几里得算法
int gcd(int a, int b) {
while (b != 0) {
int temp = a % b;
a = b;
b = temp;
}
return a;
}
// 检查是否为亲密数对
void find_closet_pair(int target) {
for (int i = 1; i < target; ++i) {
for (int j = i + 1; j * i <= target; ++j) { // 穷举较小的那个数
if (gcd(i, j) == 1 && i * j == target) { // 如果找到GCD为1且乘积为目标的数对
printf("Closest pair: (%d, %d)\n", i, j);
break; // 找到就退出内层循环
}
}
}
}
int main() {
int target;
printf("Enter the target value: ");
scanf("%d", &target);
if (target <= 1) {
printf("No closet pair exists.\n");
} else {
find_closet_pair(target);
}
return 0;
}
```
这个程序首先定义了一个计算最大公约数的函数`gcd()`,然后在`find_closet_pair()`函数中使用了两层嵌套循环,遍历所有小于目标值的整数对。如果发现某对数的乘积等于目标值,并且它们的最大公约数为1(即互质),则认为找到了亲密数对。
阅读全文