Java一个数如果恰好等于它的因子之和,这个数就称为"完数"。 例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。 编程序找出N之内的所有完数。用scanner类
时间: 2024-11-09 20:25:43 浏览: 15
在Java中,我们可以编写一个程序来找出给定范围`N`内的所有完数。首先,我们需要创建一个`Scanner`对象来获取用户输入的值`N`。然后,我们会遍历从2到`N`的所有整数,对于每个数,我们计算其因子并检查它们的和是否等于原数本身。
下面是一个简单的示例代码:
```java
import java.util.Scanner;
public class CompleteNumbers {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个正整数 N:");
int N = scanner.nextInt();
for (int i = 1; i <= N; i++) {
if (isPerfectNumber(i)) {
System.out.println("数字 " + i + " 是一个完数(因子之和为:" + sumOfFactors(i) + ")");
}
}
scanner.close();
}
// 检查一个数是否为完数
private 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) { // 如果有因数大于sqrt(num),也要加上
sum += num / i;
}
}
}
return sum == num && num != 1; // 排除1和负数
}
// 计算一个数的因子之和
private static long sumOfFactors(int num) {
long sum = 1;
for (int i = 2; i <= num / 2; i++) {
if (num % i == 0) {
sum += i;
}
}
return sum;
}
}
```
当你运行这个程序时,它会提示你输入一个正整数`N`,然后找到并打印出`N`以内所有的完数以及它们的因子之和。
阅读全文