题目描述
编写程序,要求输出a到b之间的所有完全数。所谓完全数是只指其真因子(除自身以外的因子)之和与它本身相等的正整数。如6=1+2+3,6是一个完全数。
输入要求
输入两个正整数a和b。
输出要求
输出区间[a,b]之间的所有完全数。每个完全数占一行。
输入样例
1 10000
输出样例
6
28
496
8128
package myJavaStudy;
import java.util.Scanner;
public class yuan {
public static void main(String[] args) {
int i, j;
int a, b;
int sum = 0;
Scanner scanner = new Scanner(System.in);
a = scanner.nextInt();
b = scanner.nextInt();
scanner.close();
for (i = a; i <= b; i++) {
// 保证每次和都是0,因为是不同的数
sum = 0;
for (j = 1; j < i; j++) {
// 判断是否是因子
if (i % j == 0) {
sum = sum + j;
}
}
// 如果因子和等于那个数的本身,说明是完数
if (sum == i) {
System.out.println(i);
}
}
}
}