如何用Java编程来找出并打印出1000以内所有的完数,即那些等于其所有因子之和的正整数?
时间: 2024-10-20 09:04:36 浏览: 12
在Java中,可以编写一个程序遍历1到1000之间的每个整数,检查它是否是完数。下面是一个简单的示例:
```java
public class PerfectNumbers {
public static void main(String[] args) {
for (int i = 1; i <= 1000; i++) {
if (isPerfectNumber(i)) {
System.out.println("数字 " + i + " 是一个完数");
}
}
}
// 完数判断函数
public static boolean isPerfectNumber(int num) {
int sum = 0;
for (int j = 1; j <= Math.sqrt(num); j++) { // 只需检查到num的平方根即可
if (num % j == 0) {
// 如果j是因子,那么它的另一半也是因子(除了1和本身)
sum += j;
if (j != num / j) { // 如果不是num的一半,则再加一次另一半
sum += num / j;
}
}
}
return sum == num && num != 1; // 因为1不算完数
}
}
```
这个程序首先定义了一个 `isPerfectNumber` 函数,用于检查给定的数字是否为完数。然后在 `main` 函数中,它从1到1000迭代,对于每个数,如果 `isPerfectNumber` 返回true,就将其打印出来。
阅读全文