Java中编写算法找出1000以内所有完数
时间: 2024-09-13 20:05:29 浏览: 75
在Java中,我们可以编写一个简单的算法来找出1000以内的所有完数。完数(Perfect Number)是指一个正整数,它的所有真因数(除了自身以外的因子)加起来正好等于它本身。例如,6是一个完数,因为1+2+3=6。
以下是编写这样的算法:
```java
public class PerfectNumbers {
public static void findPerfectNumbers(int limit) {
for (int i = 2; i < limit; i++) {
int sum = 0;
for (int factor = 1; factor * factor <= i; factor++) {
if (i % factor == 0) {
// 如果factor是因数,那么它的平方也是因数(如果i不是完全平方)
if (factor != i / factor) {
sum += factor + i / factor;
} else {
sum += factor;
}
}
}
// 检查sum是否等于i,如果是,则i就是一个完数
if (sum == i) {
System.out.println(i + " is a perfect number.");
}
}
}
public static void main(String[] args) {
findPerfectNumbers(1000);
}
}
```
这个程序首先遍历从2到limit的所有数字,然后对每个数字检查其所有因数之和。如果这个和等于原始数字,那么该数字就是完数。在`main`函数中,我们传入1000作为上限值。
阅读全文