java编写一个数如果恰好等于它的因子之和,这个数就称为“完数”。编写一个应用程序,求 1000之内的所有完数。
时间: 2024-10-15 21:12:35 浏览: 26
在Java中,我们可以创建一个程序来寻找1000以内所有的完数。首先,我们需要定义一个函数来计算给定数字的所有因子之和,然后遍历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
for (int factor = 2; factor * factor <= num; factor++) { // 遍历从2到sqrt(num)
if (num % factor == 0) { // 如果factor是num的因子
if (factor != num / factor) { // 如果因子不是num除以factor的结果,说明有两个因子
sum += factor;
sum += num / factor;
} else { // 否则只有一个因子
sum += factor;
}
}
}
return sum == num && num != 1; // 检查sum是否等于num且num不等于1(因为1的因子只有它自身)
}
}
```
在这个程序中,`isPerfect`函数会返回true如果输入的数是完数,false则不是。主函数`main`中遍历了1到1000,并打印出每个找到的完数。
阅读全文