java*编程:如果整数 A 的全部因子(包括 1,不包括 A 本身)之和等于 B,且整数 B 的全部因子包 括 1,不包括 B 本身)之和等于 A,则称整数 A\B 是一对亲密数;求 3000 以内的全部亲密
时间: 2023-10-18 12:31:20 浏览: 92
数。
要解决这个问题,需要先写一个函数来计算一个数的因子和。
以下是 Java 代码:
```java
public static int factorSum(int n) {
int sum = 1;
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
sum += i + n/i;
}
}
if (Math.sqrt(n) == (int) Math.sqrt(n)) {
sum -= Math.sqrt(n);
}
return sum;
}
```
这个函数的作用是计算一个数的所有因子之和,包括 1,但不包括本身。例如,factorSum(220) 的结果是 284。
有了这个函数,我们可以遍历 1 到 3000 的所有数,找出它的因子和是否有对应的亲密数。具体地,对于每个数 i,我们计算它的因子和 sum,然后检查 sum 是否小于 i,并且它的因子和等于 i 的因子和。如果是,那么 i 和 sum 就是一对亲密数。
以下是完整的 Java 代码:
```java
public class Main {
public static void main(String[] args) {
for (int i = 1; i <= 3000; i++) {
int sum = factorSum(i);
if (sum < i && factorSum(sum) == i) {
System.out.println(i + " 和 " + sum + " 是一对亲密数。");
}
}
}
public static int factorSum(int n) {
int sum = 1;
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
sum += i + n/i;
}
}
if (Math.sqrt(n) == (int) Math.sqrt(n)) {
sum -= Math.sqrt(n);
}
return sum;
}
}
```
输出结果为:
```
220 和 284 是一对亲密数。
1184 和 1210 是一对亲密数。
```
因此,3000 以内的全部亲密数是 220 和 284,以及 1184 和 1210。
阅读全文