求助:通过编程在6——5000内找出所有的亲密对数,若a与b是亲密数则a的因子和等于b,b的因子和等于a,

2024-11-29 15:11:23
推荐回答(3个)
回答1:

对于数a,因子里包含1和a么?

 

你这个实现感觉复杂了,计算有点重复,没怎么看懂。

 

你参考一下这个还没优化过的算法

int main()
{
   int a,i,j,sum1,sum2;
   int msum[5000];
   float sqrtbon;
   sum1=0;sum2=0;
   msum[0]=1;
   msum[1]=3;
   for(a=3;a<=5000;a++)
   {  msum[a-1]=0;
      sqrtbon=sqrt((float)a);
      for(i=1;i<=sqrtbon;i++)
      { if(a%i==0)
        if(a/i!=i)
         msum[a-1]+=i+a/i;
        else
         msum[a-1]+=i;
      }
   }
 
   for(i=0;i<5000;i++)
   { for(j=i+1;j<5000;j++)
      { if(msum[i]==msum[j])
       { printf("%d and %d are one pair\n",i+1,j+1);
       }
      }
   }
}

回答2:

哇,这是什么啊

回答3:

哇!这是什么呀◎﹏◎