请用java写出答案
时间: 2024-09-28 08:13:49 浏览: 34
当然,下面是使用Java编写的寻找指定范围内完数的程序:
```java
import java.util.ArrayList;
import java.util.List;
public class PerfectNumbersInRange {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入起始范围n: ");
int n = scanner.nextInt();
System.out.println("请输入结束范围m (1 <= n < m < 1000): ");
int m = scanner.nextInt();
List<Integer> perfectNumbers = findPerfectNumbersInRange(n, m);
if (!perfectNumbers.isEmpty()) {
for (int num : perfectNumbers) {
System.out.print(num + " ");
}
System.out.println(); // 移除最后一个数字后的空格
} else {
System.out.println(); // 如果没有找到完美数,打印一个空行
}
scanner.close();
}
public static List<Integer> findPerfectNumbersInRange(int start, int end) {
List<Integer> result = new ArrayList<>();
for (int i = start; i <= end; i++) {
if (isPerfectNumber(i)) {
result.add(i);
}
}
return result;
}
public static boolean isPerfectNumber(int num) {
long sum = 1;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
sum += i;
if (i != num / i) { // 处理合数分解中的重复因子
sum += num / i;
}}
}
return sum == num && num > 1; // 1不是完美数,排除掉
}
}
```
在这个Java程序中,`findPerfectNumbersInRange`函数负责查找指定范围内的完美数,`isPerfectNumber`函数则检查一个数是否是完美的。记得导入`java.util.Scanner`来进行用户输入。
阅读全文