C语言亲和数验证(验证范围1~10000)完整代码
时间: 2024-10-10 13:02:29 浏览: 14
C语言中验证一个数是否是另一个数的“亲和数”通常涉及到寻找两个数字之和等于目标值的情况。一个数如果是另一个数的亲和数,那么这两个数相加的结果就是该数自身。这里是一个简单的C程序,用于检查1到10000之间的每个数是否为它自身的亲和数:
```c
#include <stdio.h>
// 函数声明,用于查找给定数n的两个因子之和
int findSum(int n);
int main() {
int i, j;
// 遍历1到10000之间的所有整数
for (i = 1; i <= 10000; ++i) {
int sum = findSum(i);
// 如果找到的因子之和等于当前数i,则它是它的亲和数
if (sum == i) {
printf("%d 是自身的亲和数\n", i);
} else {
printf("%d 不是自身的亲和数\n", i);
}
}
return 0;
}
// 查找给定数n的两个因子之和
int findSum(int n) {
int a, b;
for (a = 1; a * a <= n; a++) { // 只需要搜索小于√n的因子
if (n % a == 0) {
b = n / a;
// 如果a不是b(避免重复计算),则计算它们的和
if (a != b && a + b == n) {
return a + b;
}
}
}
return -1; // 如果找不到合适的因子对,返回-1
}
```
这个程序会打印出1到10000之间哪些数是自身的亲和数,以及哪些不是。