数学里有一种特殊的自然数叫完美数。完美数的真因子(即除了自身以外的约数)的和,恰好等于它本身。例如:1+2+3=6,6就是一个完美数。 编写java程序,输入一个自然数n,求1~n中所有的完美数,并统计完美数个数。
时间: 2024-10-15 17:16:01 浏览: 38
在Java中,我们可以创建一个函数来检查一个数是否为完美数,然后遍历从1到输入的n,找出并统计所有完美的数。以下是简单的代码示例:
```java
public class PerfectNumber {
public static void main(String[] args) {
int n = 100; // 可以根据需要调整这个值
int perfectNumbersCount = countPerfectNumbers(n);
System.out.println("Perfect numbers between 1 and " + n + " are:");
for (int i : perfectNumbers) {
System.out.print(i + " ");
}
System.out.println("\nTotal number of perfect numbers: " + perfectNumbersCount);
}
public static boolean isPerfect(int num) {
if (num <= 1) {
return false;
}
int sum = 1;
for (int i = 2; i * i <= num; i++) { // 只需考虑i * i <= num的情况
if (num % i == 0) {
sum += i;
if (i != num / i) { // 如果不是本身的平方根,则加上另一个因子
sum += num / i;
}
}
}
return sum == num;
}
public static int[] findPerfectNumbers(int limit) {
int perfectNums[] = new int[limit]; // 存储完美数
int index = 0;
for (int i = 1; i <= limit; i++) {
if (isPerfect(i)) {
perfectNums[index++] = i; // 当找到完美数时添加到数组
}
}
return Arrays.copyOfRange(perfectNums, 0, index); // 返回实际存在的完美数
}
public static int countPerfectNumbers(int n) {
return findPerfectNumbers(n).length; // 使用findPerfectNumbers函数的结果
}
}
```
在这个程序中,`isPerfect`函数用于判断一个数是否为完美数,`findPerfectNumbers`函数则遍历并收集所有的完美数,最后`countPerfectNumbers`函数返回完美数的个数。
阅读全文