c语言编写一个函数,求400之内的亲密对数。所谓亲密对数,即A的所有因子之和等于B,B的所有因子之和等于A。(提示:把求一个数因子之和的功能定义为函数)。
时间: 2024-02-20 19:00:40 浏览: 90
好的,这是一个求亲密数对的C语言函数实现:
```c
#include <stdio.h>
// 求一个数的因子之和
int divisorSum(int num) {
int sum = 1;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
sum += i;
if (i * i != num) {
sum += num / i;
}
}
}
return sum;
}
// 求亲密数对
void findAmicableNumbers() {
for (int i = 1; i <= 400; i++) {
int sum1 = divisorSum(i);
if (sum1 > i && sum1 <= 400) {
int sum2 = divisorSum(sum1);
if (sum2 == i) {
printf("(%d, %d)\n", i, sum1);
}
}
}
}
int main() {
findAmicableNumbers();
return 0;
}
```
首先定义了一个 `divisorSum` 函数,用于求一个数的因子之和。然后定义了一个 `findAmicableNumbers` 函数,用于找到400之内的亲密数对。在 `findAmicableNumbers` 函数中,先枚举每个数 i,然后求出 i 的因子之和 sum1,如果 sum1 大于 i 且小于等于 400,则再求出 sum1 的因子之和 sum2,如果 sum2 等于 i,则说明 i 和 sum1 是一对亲密数对,将其输出即可。最后在 `main` 函数中调用 `findAmicableNumbers` 函数即可。
阅读全文