亲密数是这样的:A的所有因子之和等于B ,B的所有因子之和也等于A。那么这两个数互为亲密数。

要求:A,B不能相同。

static void Main(string[] args)
       {
           for (int i = 1 ; i < 3000; i++)
           {
               Program p=new Program ();
               int j = p.GetFamilyNumber(i);
               if (j!=-1)
               {
                   Console.WriteLine("{0}和{1}是亲密数",i,j);
               }
           }
       }
       /// <summary>
       /// 得到一个数的所有因子之和
       /// </summary>
       /// <param name="x"></param>
       /// <returns></returns>
       public int GetFactors(int x)
       {
           int temp = 0;
           for (int i = 1; i < x; i++)
           {
               if (x%i==0)
               {
                   temp += i;
               }
           }
           return temp;
       }
       //得到一个数的亲密数
       public int GetFamilyNumber(int x)
       {
           int temp1 = GetFactors(x);//A的所有因子之和等于B
           int temp2 = GetFactors(temp1);//B的所有因子之和等于C
           if (x==temp2 &&temp1>temp2)//如果A=C,那么AB是亲密数,两个数不能相同前面算过的后面不能再算了
           {
               return temp1;
           }
           return -1;
       }