一个数如果恰好等于它的因子之和,这个数就称为“完数”,比如28=1+2+4+7+14。编写一个应用程序在屏幕上输出1000之内的完数。用java编写
时间: 2024-09-12 21:14:45 浏览: 56
```
import java.util.ArrayList;
import java.util.List;
public class PerfectNumberFinder {
public static void main(String[] args) {
System.out.println("1000以内的完数有:");
for (int num = 1; num <= 1000; num++) {
if (isPerfectNumber(num)) {
System.out.println(num);
}
}
}
public static boolean isPerfectNumber(int num) {
if (num < 1) {
return false;
}
int sum = 0;
List<Integer> factors = new ArrayList<>();
for (int i = 1; i <= num / 2; i++) {
if (num % i == 0) {
factors.add(i);
sum += i;
}
}
return sum == num && factors.size() > 1;
}
}
```
这段Java代码首先定义了一个名为`PerfectNumberFinder`的类,并在其中包含了一个`main`方法用于执行程序。程序的核心功能是通过`isPerfectNumber`方法来判断一个数是否是完数,然后在1到1000之间循环调用此方法找出所有的完数,并将它们打印到屏幕上。
`isPerfectNumber`方法接收一个整数参数`num`,返回一个布尔值指示该数是否是完数。方法内部首先初始化一个用于存储因子的`List`和一个用于计算因子和的`sum`变量。接着,使用一个`for`循环来找出并累加所有的真因子(除了自身以外的因子)。最后,方法判断累加的因子和是否等于原数,并确保因子列表不为空且至少包含两个因子(因为完数至少需要包含1和其本身以外的因子),以此来确保得到的数是完数。
阅读全文