6.从键盘上输入一个整数,判断该数是否是完全数。完全数是指其所有因数(包括1但不包括其本身)的和等于该数自身的数。例如(28=1+2+7+14)用Java语言写
时间: 2024-09-13 09:16:45 浏览: 48
在Java语言中,你可以通过以下步骤来判断一个输入的整数是否为完全数:
1. 从键盘接收一个整数输入。
2. 计算该整数的所有因数(不包括自身)之和。
3. 判断这个和是否等于原始输入的整数。
以下是使用Java实现的示例代码:
```java
import java.util.Scanner;
public class PerfectNumber {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个整数: ");
int number = scanner.nextInt();
if (isPerfect(number)) {
System.out.println(number + " 是一个完全数。");
} else {
System.out.println(number + " 不是一个完全数。");
}
scanner.close();
}
public static boolean isPerfect(int num) {
if (num < 2) {
return false;
}
int sum = 1; // 1总是num的因数
int sqrt = (int) Math.sqrt(num);
for (int i = 2; i <= sqrt; i++) {
if (num % i == 0) {
sum += i;
if (i != (num / i)) {
sum += num / i;
}
}
}
return sum == num;
}
}
```
在这段代码中,`isPerfect`方法用于检查一个整数是否是完全数。首先,它排除了小于2的数,因为完全数至少是2。接着,它从2开始遍历到`sqrt(num)`(即该数的平方根),因为一个数的因数在平方根之前就会出现对称的配对。如果`num % i == 0`(即`i`是`num`的因数),则将`i`和`num/i`加到`sum`中。注意,为了避免重复添加同一个因数,当`i`和`num/i`相等时(即`i`是`num`的平方根),只加一次。最后,如果所有因数之和等于原始数,则返回`true`表示它是一个完全数,否则返回`false`。
阅读全文