求3000以内亲密数的c语言代码
时间: 2024-11-10 12:27:00 浏览: 24
在C语言中,亲密数是指两个正整数,它们的和等于这两个数的最大公约数的平方。下面是一个简单的C程序,用于找出3000以内的所有亲密数对:
```c
#include <stdio.h>
#include <math.h>
// 定义最大查找范围和计算最大公约数函数
#define MAX_RANGE 3000
int gcd(int a, int b) {
if (b == 0)
return a;
return gcd(b, a % b);
}
// 查找并打印亲密数对的函数
void find_closet_numbers() {
for (int i = 1; i <= MAX_RANGE - 1; ++i) {
for (int j = i + 1; j <= MAX_RANGE; ++j) {
// 计算最大公约数和两数之和
int gcd_value = gcd(i, j);
int sum = i + j;
// 如果和是最大公约数的平方,则找到了亲密数对
if (gcd_value * gcd_value == sum) {
printf("%d and %d are a closet number pair\n", i, j);
}
}
}
}
int main() {
find_closet_numbers();
return 0;
}
阅读全文