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" 程序运行示例如下: 相亲数:220,284 220 的真因数之和为:1+2+4+5+10+11+20+22+44+55+110=284 284 的真因数之和为:1+2+4+71+142=220 相亲数:1184,1210 1184 的真因数之和为:1+2+4+8+16+32+37+74+148+296+592=1210 1210 的真因数之和为:1+2+5+10+11+22+55+110+121+242+605=1184 相亲数:2620,2924 2620 的真因数之和为:1+2+4+5+10+20+131+262+524+655+1310=2924 2924 的真因数之和为:1+2+4+17+34+43+68+86+172+731+1462=2620 相亲数:5020,5564 5020 的真因数之和为:1+2+4+5+10+20+251+502+1004+1255+2510=5564 5564 的真因数之和为:1+2+4+13+26+52+107+214+428+1391+2782=5020 相亲数:6232,6368 6232 的真因数之和为:1+2+4+8+19+38+41+76+82+152+164+328+779+1558+3116=6368 6368 的真因数之和为:1+2+4+8+16+32+199+398+796+1592+3184=6232
时间: 2023-06-13 17:07:54 浏览: 96
以下是实现程序的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, j, sum1, sum2;
printf("相亲数:\n");
for (i = 1; i <= 9999; i++) {
sum1 = 0;
sum2 = 0;
for (j = 1; j < i; j++) {
if (i % j == 0) {
sum1 += j;
}
}
for (j = 1; j < sum1; j++) {
if (sum1 % j == 0) {
sum2 += j;
}
}
if (i == sum2 && i < sum1) {
printf("%d,%d\n", i, sum1);
printf("%d 的真因数之和为:1", i);
for (j = 2; j < i; j++) {
if (i % j == 0) {
printf("+%d", j);
}
}
printf("=%d\n", sum1);
printf("%d 的真因数之和为:1", sum1);
for (j = 2; j < sum1; j++) {
if (sum1 % j == 0) {
printf("+%d", j);
}
}
printf("=%d\n", i);
}
}
return 0;
}
```
程序的思路是:先用两个for循环分别计算i和sum1的真因数之和,然后判断i和sum1是否相等且i小于sum1,如果满足条件则输出相亲数及其真因数之和。