用JAVA,求出1~1000的所有完全数
时间: 2024-12-11 12:30:33 浏览: 11
在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("找到完美数:" + i);
}
}
}
// 检查一个数是否是完全数
private static boolean isPerfect(int num) {
int sum = 1;
for (int j = 2; j * j <= num; j++) { // 只需要考虑j * j <= num的情况
if (num % j == 0) { // 如果j是因子
sum += j; // 将因子添加到总和中
if (j != num / j) { // 如果还有另一个因子(不是本身的平方根)
sum += num / j; // 添加另一个因子
}
}
}
return sum == num && num > 1; // 返回如果数是完全数(大于1并且总和等于它本身)
}
}
```
这个程序会打印出1到1000之间所有的完全数。
阅读全文