所谓亲密数其定义为:题目描述:两个不同的自然数A
和B
,如果整数A
的全部因子(包括1
,不包括A
本身)之和等于B
;且整数B的全部因子(包括1
,不包括B
本身)之和等于A
,则将整数A
和B
称为亲密数。求3000
以内的全部亲密数。
以下为详细代码
#include<stdio.h>
void solve(){
/*********Begin*********/
int i,j,sum1,sum2,a[30000]={0},b[30000]={0};
#分离出3000以内每个整数的因子之和并存入数组中#
for(i=2;i<=3000;i++)
{
sum1=0;
for(j=1;j<i;j++)
{
if(i%j==0)
{
sum1+=j;
}
a[i]=sum1;
}
}
#由于要进行比较,所以要分别存入两次#
for(i=2;i<=3000;i++)
{
sum2=0;
for(j=1;j<i;j++)
{
if(i%j==0)
{
sum2+=j;
}
b[i]=sum2;
}
}
#进行比较#
for(i=2;i<=3000;i++)
{
for(j=1;j<i;j++)
{
if(j==a[i])
{
if(b[j]==i)
{
printf("(%d,%d)",a[i],b[j]);
}
}
}
}
/*********End**********/
}
int main(void)
{
solve();
return 0;
}