JAVA编写正整数number如果恰好等于它的因子(因子包括1,但不包括number本身)之和,这个数就称之为“完数”。编写一个应用程序,求1000以内的所有完数。
时间: 2024-09-26 19:16:45 浏览: 4
在Java中,我们可以创建一个循环来遍历1到1000之间的每个数字,然后检查每个数是否是其因子之和。以下是简单的步骤:
```java
public class PerfectNumbers {
public static void main(String[] args) {
for (int i = 1; i <= 1000; i++) {
if (isPerfect(i)) {
System.out.println("Number " + i + " is a perfect number.");
}
}
}
// 定义一个辅助函数来判断一个数是否为完美数
public static boolean isPerfect(int num) {
int sum = 1; // 初始化因子和为1(因为1始终是任何一个数的因子)
for (int factor = 2; factor * factor <= num; factor++) { // 遍历从2到sqrt(num)
if (num % factor == 0) {
sum += factor; // 如果因子存在,则添加到和中
// 因子可能是另一个因子(除了1),所以也加上第二个因子
if (factor != num / factor) {
sum += num / factor;
}
}
}
return sum == num && num != 1; // 检查和是否等于数自身且不包括1
}
}
```
运行这个程序,它会打印出1000以内所有的完数。如果需要,你可以将结果存储在一个列表或数组里,而不是每次都打印出来。