两个数a和b,a的所有真因数之和等于b,b的所有真因数之和等于a,则称a,b是一对亲和数。
如: 220的真因子是:1、2、4、5、10、11、20、22、44、55、110;
284的真因子是:1、2、4、71、142。
伴随矩阵的思想很值得学习
#include <stdio.h>
#include <string.h>
#define num 5000000
int sum[num];
int main()
{
int i,j;
memset(sum,0,sizeof(sum));
for(i=0;i<=num;i++)
sum[i]+=1;
for(i=2;i<<1<=num;i++)
{
j=i+i;
while(j<=num)
{
sum[j]+=i;
j+=i;
}
}
for(i=220;i<=num;i++)
if(sum[i]>i && sum[i]<=num && sum[sum[i]]==i)
printf("%d %d\n",i,sum[i]);
return 0;
}
转载声明:http://blog.csdn.net/v_JULY_v/article/details/6441279