http://blog.youkuaiyun.com/v_JULY_v/article/details/6441279
在上面这个blog中看到不少比较经典的算法问题研究,俗话说,好记性不如烂笔头,所以记录一下自己的理解,以防忘记
1首先,什么是是亲和数?
亲和数成对出现,假如A和B是一对亲和数,那么A的所有的真因子之和等于B,反过来B的所有真因子之和等于A
举个栗子:
220和284,一对最小的亲和数
220的真因子:1,2,4,5,10,20,22,44,55,110所有之和等于280
284的真因子:1,2,4,71,142,所有之和等于220
2对于求500万以内的亲和数
July的博客中利用一个伴随数组的思想,即,建立一个数组arr[5000000],数组的值为数组下表的所有真因子之和,
也就是说arr[220]=284,然后判断对于第i个数,是否满足arr[arr[i]]=i,若满足则为亲和数。
这里对于我当时理解的关键,就是怎么求一个数的所有真因子之和,对于单个数n,只能是遍历n/2来求