标题
亲密数
问题描述
如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。求3000以内的全部亲密数
题目要求
不要求输入,输出格式中应包含结果
输入格式
输出格式
例如:3000以内的全部亲密数是:48-75,140-195 ……
考察内容*
算法的空间复杂度和时间复杂度
解题思路*
1.计算出A的因子和赋值给B;
(当A的因子和等于B时,B的因子和也等于A, 那么A和B就是亲密数
2.计算B的因子和赋给sB;
3.比较sB与A的值,如果相等则A和B是亲密数
核心代码*
package test_1; // intimacy 亲密数 public class intimacy { public static void main(String[] args) { int i, A, B, sB; System.out.print("3000以内的全部亲密数:"); for (A = 1; A <= 3000; A++) { //计算数 A 的各因子,各因子之和存放于 B for (B = 0, i = 1; i <= A / 2; i++) { if (A % i== 0) { B += i; } } //计算 B 的各因子,各因子之和存于 sB for (sB = 0, i = 1; i <= B / 2; i++) { if (B % i== 0) { sB += i; } } //sB=A,则A和B是一对亲密数 if (sB == A && A < B) { System.out.print(A + "—" + B + ","); } } } }