import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (scanner.hasNext()){ int n = scanner.nextInt(); for (int i = 1; i <= n; i++) { int sum = 0; for (int j = 1; j < i; j++) if (i%j==0) sum+= j; if (sum==i) System.out.print(i+" "); } System.out.println(); } } }
运行时间:51ms
占用内存:10824k
notice:1不是完数
完数的定义:某自然数除它本身以外的所有因子之和等于该数,则该数被称为完数。
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
* @author Allen_Hua
* @create_time 创建时间:May 12, 2018 9:19:14 PM 类说明
*/
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while (scan.hasNext()) {
int n = scan.nextInt();
int sum = 0;
List list = new ArrayList();
// 找到从2到n之间的所有的完数(包括2和n)
for (int i = 2; i <= n; i++) {
// 对该数找因子 因子求和
for (int j = 1; j < i; j++) {
// 加限定条件 找到因子
if (i % j == 0) {
sum += j;
}
}
if (sum == i) {
list.add(i);
}
sum = 0;
}
// 进行格式控制输出
for (int i = 0; i < list.size() - 1; i++) {
System.out.print(list.get(i) + " ");
}
System.out.println(list.get(list.size() - 1));
}
}
}