亲密数是这样的: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; }
转载于:https://blog.51cto.com/broncho/1310656