-
题目描述:
-
求1-n内的完数,所谓的完数是这样的数,它的所有因子相加等于它自身,比如6有3个因子1,2,3,1+2+3=6,那么6是完数。即完数是等于其所有因子相加和的数。
-
输入:
-
测试数据有多组,输入n,n数据范围不大。
-
输出:
-
对于每组输入,请输出1-n内所有的完数。如有案例输出有多个数字,用空格隔开,输出最后不要有多余的空格。
-
样例输入:
-
6
-
样例输出:
-
6
import java.util.Scanner;
public class POJ1050 {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
while (cin.hasNextInt()) {
int n = cin.nextInt();
//0到6中只有一个完数6,所以偷懒直接从6以上的开始计算
if (n >= 6) {
//6到n-1的数范围
System.out.print("6");
for (int i = 7; i < n; i++) {
//来算i的因子,看是否是完数
int sum = 0;
for (int j = 1; j < i; j++) {
if (i % j == 0) {
sum += j;
}
}
if(i == sum) {
System.out.print(" " + i);
}
}
}
}
}
}