C语言2500年前数学大师毕达哥拉斯就发现,220与284两数之间存在着奇妙的联系: 220的真因数之和为:1+2+4+5+10+11+20+22+44+55+110=284 284的真因数之和为:1+2+4+71+142=220 毕达哥拉斯吧这样的数对A,B称为相亲数:A的真因数之和为B,而B的真因数之和为A。设计程序求4位以内的相亲数。 **输出格式要求:"相亲数:%d,%d\n" "%d 的真因数之和为:%d" "+%d" "=%d\n"
时间: 2023-12-09 09:07:06 浏览: 296
奇妙数学大世界 让你爱上数学
以下是 C 语言程序实现:
```c
#include <stdio.h>
int main()
{
int i, j, div_sum_i, div_sum_j;
for (i = 1; i < 10000; i++) {
div_sum_i = 0;
for (j = 1; j < i; j++) {
if (i % j == 0) {
div_sum_i += j;
}
}
div_sum_j = 0;
for (j = 1; j < div_sum_i; j++) {
if (div_sum_i % j == 0) {
div_sum_j += j;
}
}
if (div_sum_j == i && div_sum_i != i) {
printf("相亲数:%d,%d\n", i, div_sum_i);
printf("%d 的真因数之和为:%d", i, div_sum_i);
for (j = 1; j < i; j++) {
if (i % j == 0) {
printf("+%d", j);
}
}
printf("=%d\n", i);
printf("%d 的真因数之和为:%d", div_sum_i, i);
for (j = 1; j < div_sum_i; j++) {
if (div_sum_i % j == 0) {
printf("+%d", j);
}
}
printf("=%d\n", div_sum_i);
}
}
return 0;
}
```
程序会遍历 1 到 9999 的数字,对于每个数字 i,计算它的真因数之和 div_sum_i。然后再对 div_sum_i 计算真因数之和 div_sum_j。如果 div_sum_j 等于 i,且 div_sum_i 不等于 i,那么就找到了一组相亲数。程序会按照题目要求输出相亲数以及各自的真因数之和。
阅读全文