/**
* @author LLJ
* @time 2020-5-5 下午10:14:44
* @Description 如果整數A的全部因子(包括1,不包括A本身)之和等於B,且整數B的全部因子
* (包括1,不包括B本身)之和等於A,則稱整數A/B是一對親密數。求3000以內
* 的全部親密數。
*/
public class QinMiShu7 {
public static void main(String[] args) {
for (int i = 0; i <= 3000; i++) {
int a = yinZiHe(i);//i的因子和賦值給a;
int b = yinZiHe(a);//a的因子和賦值給b;
//分析:如果 b == i,意味着b的因子和爲a,
//b的因子和爲a,滿足親密數的要求
//同時,爲了避免重複解,要求 a < b
if(a < b && b == i){
System.out.println(a + " 的親密數是 " + b);
}
}
}
/**
* 計算因子和的函數
* @Time 2020-5-5 下午10:17:02
* @param n
* @return
*/
public static int yinZiHe(int n){
int sum = 0;
for (int i = 1; i <= n/2; i++) {
if(n%i == 0){
sum+=i;
}
}
return sum;
}
}
輸出結果爲:
220 的親密數是 284
1184 的親密數是 1210
2620 的親密數是 2924