如果整数A的全部因子(包括1,不包括A本身)之和等于B,且整数B的全部因子(包括1,不包括B本身)之和等于A,并且A不等于B,则称整数A\B是一对亲密数。
比如:220的因子有1,2,4,5,10,11,20,22,44,55,110;因子和为284
284的因子和为220;所以(220,284)是亲密数对
求3000以内的全部亲密数对
#include<stdio.h>//求3000以内的亲密数对
int Fact(int i);
int main()
{
int i, k;
for (i = 1; i <= 3000; i++)
{
k = Fact(i);//将i的因子和赋值给k
if (i == Fact(k)&&i<k)//验证k的因子和是否为i
printf("(%d,%d)\n", i, k);
}
return 0;
}
int Fact(int i)//求i的因子和
{
int j, sum = 0;
for (j = 1; j <= i / 2; j++)
{
if (i % j == 0)
sum += j;
}
return sum;
}