题目描述
两个不同的自然数A和B,如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。求3000以内的全部亲密数。
输入
无
输出
3000以内的全部亲密数(输出格式:(A,B),不加换行,不加分隔符号)
一对亲密数只输出一次, 小的在前
样例输入
无
样例输出
(220,284)(1184,1210)(2620,2924)
完整代码
#include <stdio.h>
int fc(int a) //求自然数的因子之和
{
int i, sum = 0;
for (i = 1; i < a; i++)
{
if (a % i == 0)
{
sum += i;
}
}
return sum;
}
int main()
{
int a, b;
for (a = 2; a <= 3000; a++) //输出3000以下的亲密数
{
b = fc(a); //假设a的全部因子都等于b;
if (fc(b) == a && a != b && a < b) //整数B的全部因子(包括1,不包括B本身)之和等于A,且a<b&&a!=b
{
printf("(%d,%d)", a, b);
}
}
return 0;
}