亲密数——数论问题系列

亲密数是成对出现的,展示了两个整数之间通过因子的密切联系。如果整数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 {
if(para%i==0)
{
divisorSum+=i;
if(i>=2)
{
factor=factor+"+"+i;
}
}
}
if((para!=divisorSum)&&(para {
for(int k=1;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 stub
System.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=220
1+2+4+5+10+11+20+22+44+55+110=284

1184与1210是亲密数!实例如下:
1+2+5+10+11+22+55+110+121+242+605=1184
1+2+4+8+16+32+37+74+148+296+592=1210

2620与2924是亲密数!实例如下:
1+2+4+17+34+43+68+86+172+731+1462=2620
1+2+4+5+10+20+131+262+524+655+1310=2924

你可能感兴趣的:(数论问题)