读书人

亲密数数论有关问题系列

发布时间: 2013-03-26 09:54:34 作者: rapoo

亲密数——数论问题系列
亲密数是成对出现的,展示了两个整数之间通过因子的密切联系。如果整数a的因子和等于b,而整数b的因子和等于a,因子包括1但不包括本身,且a不等于b,则称a、b为亲密数对。

例如:220和204便是一堆亲密数,因为其满足如下规则:
220的各个因子之和为:1+2+4+5+10+11+20+22+44+55+110=204;
204的各因子之和为:1+2+4+71+142=220.

代码如下:

import java.util.Scanner;public class QinMiNumber {static void findFriendNumber(int para){int divisorSum=0;int FNDivisorSum=0;String factor="1";String FNFactor="1";for(int i=1;i<para;i++){if(para%i==0){divisorSum+=i;if(i>=2){factor=factor+"+"+i;}}}if((para!=divisorSum)&&(para<divisorSum)){for(int k=1;k<divisorSum;k++){if(divisorSum%k==0){FNDivisorSum+=k;if(k>=2){FNFactor=FNFactor+"+"+k;}}}if(para==FNDivisorSum){System.out.println(para+"与"+divisorSum+"是亲密数!实例如下:");System.out.println(FNFactor+"="+para);System.out.println(factor+"="+divisorSum);System.out.println();}/*else{System.out.println(para+"不存在亲密数!");}*/}}public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.print("请输入亲密数的最大值:");Scanner input = new Scanner(System.in);int Max= input.nextInt();System.out.println("程序将查找1~"+Max+"之间的亲密数!");for(int i=1;i<=Max;i++){findFriendNumber(i);}}}


代码运行结果如下:

请输入亲密数的最大值:5000程序将查找1~5000之间的亲密数!220与284是亲密数!实例如下:1+2+4+71+142=2201+2+4+5+10+11+20+22+44+55+110=2841184与1210是亲密数!实例如下:1+2+5+10+11+22+55+110+121+242+605=11841+2+4+8+16+32+37+74+148+296+592=12102620与2924是亲密数!实例如下:1+2+4+17+34+43+68+86+172+731+1462=26201+2+4+5+10+20+131+262+524+655+1310=2924

读书人网 >编程

热点推荐