输入两个正整数m和n(1<=m,n<=1000),输出m~n之间的所有完数。完数就是因子和与它自身相等的数(如6=1+2+3)。 1. 循环 m->n 2 判断某个数 i 是否是完数 a.求i得因子和 sum=sum+ b. 如果因子和 等于 i 就是完数。Java代码
时间: 2024-02-25 11:51:25 浏览: 63
好的,以下是实现这个功能的 Java 代码示例:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class PerfectNumber {
public static boolean isPerfect(int num) {
/**
* 判断一个数是否是完数
*/
List<Integer> factors = new ArrayList<Integer>();
for (int i = 1; i < num; i++) {
if (num % i == 0) {
factors.add(i);
}
}
int sum = 0;
for (int factor : factors) {
sum += factor;
}
return sum == num;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入 m:");
int m = scanner.nextInt();
System.out.print("请输入 n:");
int n = scanner.nextInt();
List<Integer> perfectNums = new ArrayList<Integer>();
for (int i = m; i <= n; i++) {
if (isPerfect(i)) {
perfectNums.add(i);
}
}
System.out.printf("%d~%d 之间的完数为:%s", m, n, perfectNums.toString());
}
}
```
这段代码中,`isPerfect` 方法用于判断一个数是否是完数,它的实现方法是先求出该数的因子列表,并计算它们的和,如果和等于该数本身,就说明这是一个完数。在主程序中,首先获取用户输入的 m 和 n,然后使用循环遍历 m 到 n 之间的所有数,对于每一个数,调用 `isPerfect` 方法判断它是否是完数,如果是,就将它加入到完数列表 `perfectNums` 中。最后输出完数的列表即可。
阅读全文