写出1~1000的完美数 Java
时间: 2024-09-27 14:17:53 浏览: 48
完美数是指其所有真因数(除了自身以外的正因数)之和等于该数本身的自然数。例如,6是一个完美数,因为它的因数有1、2和3,它们的和正好是6。
在Java中编写一个找出1到1000范围内完美数的程序,可以采用循环和条件判断的方式。以下是简单的代码示例:
```java
public class PerfectNumbers {
public static void main(String[] args) {
int limit = 1000;
for (int i = 1; i <= limit; ++i) {
int sum = 0;
for (int j = 1; j * j <= i; ++j) {
if (i % j == 0) { // 如果i能被j整除,那么j和i/j都是因子
sum += j; // 加入因子sum
if (j != i / j) { // 如果不是自身,再加另一个因子
sum += i / j;
}
}
}
if (sum == i && isPerfectNumber(i)) {
System.out.println("完美数:" + i);
}
}
}
// 辅助函数检查是否是完全平方数(如果是,则不需要再次计算)
private static boolean isPerfectNumber(int num) {
long sqrtNum = (long) Math.sqrt(num);
return sqrtNum * sqrtNum == num;
}
}
```
这个程序会遍历1到1000的每个数,计算其因子之和,如果发现某数的因子之和等于它本身,并且这个数不是完全平方数(因为完美数不包括完全平方数),则打印出它是完美数。
阅读全文