1.问题描述
如果整数A的全部因子(包括1不包括本身)之和等于B;且整数B的全部因子(包括1,不包括其本身)之和等于A,那么整数A和整数B成为亲密数,求3000以内的亲密数
2完整程序
int main(int argc,char*argv[]){
for ( int a=1; a<3000; a++) {
int b=0;
for ( int i=1; i<=a/2; i++)
if ((a%i)==0)
b+=i;
int n=0;
for ( int i=1; i<=b/2; i++)
if ((b%i)==0)
n+=i;
if (n==a&&a<b) {
printf("亲密数:%d---%d\n",a,b);
}
}
return 0;
}
//方式2
int main(int argc,char*argv[]){
int i,b,n;
for ( int a=1; a<3000; a++) {
for ( b=0, i=1; i<=a/2; i++)//b初始化为0
if ((a%i)==0)
b+=i;
for ( n=0, i=1; i<=b/2; i++)//n初始化为0
if ((b%i)==0)
n+=i;
if (n==a&&a<b) {
printf("亲密数:%d---%d\n",a,b);
}
}
return 0;
}
3.结果
亲密数:220—284
亲密数:1184—1210
亲密数:2620—2924