转自:http://zh.wikipedia.org/wiki/%E7%9B%B8%E4%BA%B2%E6%95%B0
相亲数(Amicable Pair),又称亲和数、友爱数,指两个正整数中,彼此的全部约数之和(本身除外)与另一方相等。
例如220与284:
220的全部约数(除掉本身)相加是:1+2+4+5+10+11+20+22+44+55+110=284
284的全部约数(除掉284本身)相加的和是:1+2+4+71+142=220
换句话说,亲和数又可以说成是两个正整数中,一方的全部约数之和与另一方的全部约数之和相等。
220的全部约数之和是:1+2+4+5+10+11+20+22+44+55+110+220 = 284+220 = 504
284的全部约数之和是:1+2+4+71+142+284 = 220+284 = 504
public static void main(String[] args)
{
int n = 1000000;
printLoveNumberGroup(n);
}
/**
* 相亲数(Amicable Pair),又称亲和数、友爱数,指两个正整数中,彼此的全部约数之和(本身除外)与另一方相等。
*
* http://zh.wikipedia.org/wiki/%E7%9B%B8%E4%BA%B2%E6%95%B0
* @param n
*/
public static void printLoveNumberGroup(int n)
{
int m = 2;
Map<Integer, Boolean> map = new HashMap<Integer, Boolean>();
do
{
List<Integer> list = findYueSu(m);
int sum = getSum(list);
List<Integer> list2 = findYueSu(sum);
int sum2 = getSum(list2);
if (m == sum)
{
System.out.println("self sum["+ m +"]");
} else
{
if (m == sum2)
{
if (null == map.get(Integer.valueOf(m)))
{
map.put(Integer.valueOf(sum), Boolean.TRUE);
System.out.println("love number["+ m +", "+ sum +"]");
}
}
}
m++;
} while (m <= n);
}
/**
* 查找被本身外的所有约数
*
* @param n
* @return
*/
private static List<Integer> findYueSu(int n)
{
if (n < 1)
return java.util.Collections.emptyList();
List<Integer> list = new ArrayList<Integer>();
list.add(Integer.valueOf(1));
int mid = (int)Math.sqrt(n);
for (int i = 2; i <= mid; i++)
{
int num = n/i;
if (i * num == n)
{
list.add(Integer.valueOf(i));
if (i != num)
{
list.add(Integer.valueOf(num));
}
}
}
return list;
}
private static int getSum(List<Integer> list)
{
int sum = 0;
if (null == list || list.isEmpty())
{
return sum;
}
for (Integer num : list)
{
sum += num.intValue();
}
return sum;
}
分享到:
相关推荐
相亲数和亲和数优化源码 相亲数 亲和数 intel 线程 优化大赛
算法-亲和数(信息学奥赛一本通-T1154)(包含源程序).rar
一般地讲,如果两个数中任何一个数都是另一个数的真约数之和,则这两个数就是亲和数。 你的任务就编写一个程序,判断给定的两个数是否是亲和数 Input 输入数据第一行包含一个数M,接下有M行,每行一个实例,包含两...
能够解超越方程noj代码的小行星的系统动态信息
用模型论方法证明了,对于在自然数系 N上与PA等价的一组公理P1而言,N中一类特殊完美数的无限性是独立于P1的。并且,N中一类特殊亲和数的无限性也是独立于P1的。
设置cpu 亲和性的 易语言源代码 我的cpu是 4核8线程cpu编号0-7 -2 在任务管理器设置相关性里面 就会显示6号cpu 如果减去1 那就是7号cpu NUMBER_OF_PROCESSORS 环境变量是显示你多少核心数
了解 Linux® 2.6 调度器如何处理 CPU 亲和性(affinity)可以帮助您更好地设计用户空间的应用程序。软亲和性(affinity) 意味着进程并不会在处理器之间频繁迁移,而 硬亲和性(affinity) 则意味着进程需要在您...
【转载】C++关于多线程的CPU亲和性设置
小学数学数学故事趣味数学亲和的友好数
论文以如何培养空中乘务人员的亲和力为题,主要围绕亲和力展开描述.论文分成三大部分.第一部分详细说明乘务员工作内容和亲和力的意义.第二部分分为两小部分,主要说明亲和力带来的自身影响和社会影响.第三部分为论文...
本章学习如何用亲和性分析方法找出在什么情况下两个对象经常一起出现。通俗来讲,这也叫“购物篮分析”,因为曾有人用它找出哪些商品经常一起出售。亲和性分析用来找出两个对象共同出现的情况。而前几章,我们关注的...
打造亲和力的网站,打造亲和力的网站,打造亲和力的网站
亲和超滤技术的研究进展,孟仕平,丁玉,亲和超滤技术是传统的亲和层析技术与超滤技术的有机结合,它既有良好的选择性又易于大规模的操作,是现代分离纯化技术的一个重要
主要包括近五年MHC-I类亲和力预测文献
1-1亲和图new.doc
亲和力定律用于通过更改泵速来更改泵的特性,因此,泵的流量,扬程和功率将发生变化。 在本文中,适应性定律适用于满足泵的液压要求,同时通过构建新的泵曲线来保持传递给泵电机的功率不变。 在广泛的天气和负载...
获取多核CPU使用率,设置CPU亲和性,设置并发线程数和优先级,绑定线程在特点CPU上运行,并测试
亲和层析法纯化胰蛋白酶 亲和层析法纯化胰蛋白酶
用于模糊连接度中亲和度的计算,是一个子函数,在模糊连接度中起着重要作用
基于MPCore与Linux的中断亲和性研究.pdf