c语言古希腊数学家毕达哥拉斯在自然数研究中发现,220 的所有真约数(即不是自 身的约数)之和为: 1+2+4+5+10+11+20+22+44+55+110=284。 而 284 的所有真约数为 1、2、4、71、142,加起来恰好为 220。人们对这样 的数感到很惊奇,并称之为亲和数。一般地讲,如果两个不同的数中任何一个数 都是另一个数的真约数之和,则这两个数就是亲和数,又如 17296 和 18416。用c语言编写一个程序,判断给定的两个数是否是亲和数,然后列出 60000 以下的所 有对亲和数
时间: 2024-02-18 09:01:26 浏览: 145
下面是实现亲和数判断和列出 60000 以下所有亲和数的 C 语言代码:
```c
#include <stdio.h>
int sum_proper_divisors(int n) {
int sum = 0;
for (int i = 1; i < n; i++) {
if (n % i == 0) {
sum += i;
}
}
return sum;
}
int main() {
int num1, num2;
printf("请输入两个整数:");
scanf("%d %d", &num1, &num2);
if (sum_proper_divisors(num1) == num2 && sum_proper_divisors(num2) == num1) {
printf("%d 和 %d 是亲和数\n", num1, num2);
} else {
printf("%d 和 %d 不是亲和数\n", num1, num2);
}
printf("60000 以下的所有亲和数:\n");
for (int i = 1; i < 60000; i++) {
int j = sum_proper_divisors(i);
if (i < j && sum_proper_divisors(j) == i) {
printf("%d 和 %d\n", i, j);
}
}
return 0;
}
```
运行程序后,输入两个整数,程序会判断它们是否是亲和数,并列出 60000 以下的所有亲和数。注意,为了避免重复,亲和数的判断和列举都是从小到大的顺序进行的。
阅读全文