java输出完全数及其真因子
时间: 2023-12-04 09:21:30 浏览: 115
以下是一个Java程序,用于输出小于给定数字的所有完全数及其真因子:
```java
import java.util.ArrayList;
import java.util.List;
public class PerfectNumbers {
public static void main(String[] args) {
int maxNumber = 10000; // 需要计算的最大数字
for (int i = 1; i <= maxNumber; i++) {
if (isPerfectNumber(i)) {
System.out.print(i + ": ");
List<Integer> trueDivisors = getTrueDivisors(i);
for (int j : trueDivisors) {
System.out.print(j + " ");
}
System.out.println();
}
}
}
// 判断一个数字是否是完全数
public static boolean isPerfectNumber(int number) {
List<Integer> divisors = getDivisors(number);
int sum = 0;
for (int i : divisors) {
sum += i;
}
return sum == number;
}
// 获取一个数字的所有因子
public static List<Integer> getDivisors(int number) {
List<Integer> divisors = new ArrayList<>();
for (int i = 1; i <= number / 2; i++) {
if (number % i == 0) {
divisors.add(i);
}
}
divisors.add(number);
return divisors;
}
// 获取一个数字的真因子
public static List<Integer> getTrueDivisors(int number) {
List<Integer> divisors = getDivisors(number);
divisors.remove(divisors.size() - 1);
return divisors;
}
}
```
在这个程序中,我们使用了三个方法:`isPerfectNumber`,`getDivisors`和`getTrueDivisors`。
`isPerfectNumber`方法接受一个数字作为参数,返回一个布尔值,指示该数字是否是完全数。它首先调用`getDivisors`方法来获取该数字的所有因子,然后计算这些因子的和。如果和等于该数字本身,则该数字是完全数。
`getDivisors`方法接受一个数字作为参数,返回一个`List`对象,包含该数字的所有因子。它使用一个循环来检查每个可能的因子,并将它们添加到一个列表中。最后,它将该数字本身添加到列表中,并返回该列表。
`getTrueDivisors`方法接受一个数字作为参数,返回一个`List`对象,包含该数字的所有真因子。它首先调用`getDivisors`方法来获取该数字的所有因子,然后从列表中删除最后一个元素(即该数字本身),并返回剩余元素组成的列表。
在`main`方法中,我们首先指定需要计算的最大数字,然后使用一个循环来迭代所有小于该数字的数字。对于每个数字,我们检查它是否是完全数,如果是,则输出该数字及其真因子。
阅读全文