题目描述
两个不同的自然数A和B,如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。求3000以内的全部亲密数。
输入
无
输出
3000以内的全部亲密数(输出格式:(A,B),不加换行,不加分隔符号)
一对亲密数只输出一次, 小的在前
样例输入
无
样例输出
(220,284)(1184,1210)(2620,2924)
代码题解:
public static void main(String[] args) {
int a, i, b, n; // b,n存放因子和;
for (a = 1; a < 3000; a++) { // 3000以内的全部整数
for (b = 0, i = 1; i <= a / 2; i++) {// *计算数a的各因子,把各因子之和存放于b
if ((a % i) == 0) {
b += i; // 累加因子和
}
}
// 计算b的各因子,把各因子之和存于n
for (n = 0, i = 1; i <= b / 2; i++) {
if ((b % i) == 0) {
n += i; // 累加因子和
}
}
// 通过对比符合条件则输出;
if (n == a && a < b) {
System.out.print("(" + a + "," + b + ")");// *若n=a,则a和b是一对亲密数,输出
}
}
程序结果:

该博客主要探讨了亲密数的概念,即两个不同自然数的因子和相等,并给出了求解3000以内所有亲密数的程序结果。样例输出显示了三对亲密数示例。
2298

被折叠的 条评论
为什么被折叠?



