如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。求3000以内的全部亲密数
题目:如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。求3000以内的全部亲密数。
程序分析:求A的因子之和为B,再求B的因子之和为C。判断A是否等于C。
#include<stdio.h>
int main()
{
int a,b,i,j,c;
for(a=1;a<3000;a++)// 穷举a
{
b=0;
for(i=1;i<=a/2;i++)
if(a%i==0)
b+=i;// b=a的因子和
c=0;
for(j=1;j<=b/2;j++)
if(b%j==0)
c+=j;// c=b的因子和
if(a==c&&a<b)// 排除重复
printf("%d和%d为亲密数\n",a,b);
}
return 0;
}
浅知拙见,若有纰漏,请指正,感激不尽!