`
superich2008
  • 浏览: 323007 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

亲和数、相亲数

阅读更多
转自: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处理器上的线程调度。 相亲数(Amicable ...

    相亲自我介绍模板精选.doc

    同时,自我分析显示具有较强的直觉感、分析能力和亲和力,这可能对建立人际关系有所帮助。 5. 属相与星座匹配:在中国传统文化中,属相匹配有时被认为会影响两个人的相处。在这份自我介绍中,提出了希望找属鼠的...

    女相亲的自我介绍精选.doc

    9. **幽默感**:恰当的幽默可以使自我介绍更具亲和力,也能反映出你的性格特点。就像相亲介绍中的幽默细胞,也能在网络环境中增添魅力。 10. **明确期待**:无论是寻找伴侣还是寻求职业机会,清晰地表达你的期望和...

    相亲幽默自我介绍男精选.doc

    4. **适度的自谦**:适当的自谦可以增加亲和力,如“年龄保密,身高你猜,体重不说”,这种留白的方式既保留了神秘感,又显得谦逊低调。 5. **诚恳与热情**:表示愿意与对方进一步接触,如“请你多多指教”、“欢迎...

    相亲交友自我介绍精选.doc

    5. **幽默感**:文档中用幽默的方式介绍自己的功能和优势,如“能承受62公斤重量”的肩膀,这种幽默感能缓解紧张气氛,提升亲和力,同样适用于IT行业的团队建设。 6. **自我评估与改进**:认识到自身的不足,并表达...

    优秀资料(2021-2022年收藏)相亲网站广告词.doc

    6. 品牌故事(品牌塑造):讲述品牌故事可以增加品牌的亲和力和可信度。分享成功的匹配案例,或者描绘一段浪漫的相遇,可以帮助建立品牌形象,增进用户信任。 7. 在线数据库(招聘功能):强调网站的在线简历库,如...

    Con A型差异糖蛋白在大鼠肝再生中的作用研究 (2013年)

    为研究差异糖蛋白在肝再生中的作用,运用Con A凝集素固相亲和层析、双向电泳和质谱等技术对大鼠再生肝的糖蛋白质组学进行研究,共鉴定出123种蛋白.有117种蛋白具有潜在的N-或O-糖基化位点;差异分析结果表明,共有33...

    高项速记顺口溜

    - **新七种工具**:“矩树相亲策动优”,即矩阵图、树状图、相互关系图、亲和图、过程决策程序图、活动网络图、优先矩阵图。这些工具有助于更深入地分析问题和寻找解决方案。 通过这些顺口溜和知识点的总结,希望...

    软考高级——计算 公式汇总

    在质量管理方面,常用的工具包括老七种工具:流程图、因果图、直方图、散点图、排列图、控制图、检查表,以及新七种工具:矩阵图、树状图、相互关系图、亲和图、过程决策方法图、活动网络图、优先矩阵图。...

    疫情期间朋友圈营销方法.pdf

    就像相亲时的收入展示方式,营销尴尬不在于产品,而在于呈现方式。理财经理需要深入了解客户的需求差异,避免盲目推送。例如,对于不同的客户群体,住在高端小区和普通小区的人可能对金融产品的需求大相径庭。推送...

    如何推销自己从《假装情侣》感悟.pptx

    2. 成功地把自己推销给别人:建立良好的个人形象,包括穿着得体、真诚倾听、展现亲和力和沟通能力。在IT面试或团队合作中,这些特质能让你脱颖而出。 3. 成功地把产品(或技术解决方案)推销给别人:深入理解你所...

    年底大促活动标语-3页.pdf

    8. **语言幽默**:“十一相亲价给你”,运用幽默的语言,轻松吸引消费者的注意力,使促销活动更具亲和力。 9. **促销组合**:“黄金周品牌装机豪礼送不停”,结合多种促销方式,如打折、赠品、抽奖等,以满足不同...

    信息系统项目管理师知识记忆口诀(下).pdf

    老七种工具包括流程图、因果图、直方图、散点图、排列图、控制图和检查表,而新七种工具则包括矩阵图、树状图、相互关系图、亲和图、过程决策方法图、活动网络图和优先矩阵图。这些工具各有其应用的场景和目的,比如...

    软考高项知识点速记口诀汇总

    - “亲和图、过程决策程序图、关联图、树形图、优先矩阵、活动网络图、矩阵图” **5. 项目目标的特点** - **口诀**:“目标是鲜橙多” - “项目目标的特点:优先级、层次性、多目标性” **6. 风险识别的工具和...

Global site tag (gtag.js) - Google Analytics