题目描述
求正整数2和n(n≤30000)之间的所有完全数,一行输出一个。
所谓完全数:因子之和等于它本身的自然数,如6=1+2+3,注意因子包括1但不包括自身。
提示
输入输出格式
输入格式
输入n。
输出格式
一行一个数,按由小到大的顺序。
输入输出样例
输入
7
输出
6
python
n = int(input())
for i in range(2, n + 1):
factor_sum = 1
for j in range(2, int(i ** 0.5) + 1):
if i % j == 0:
factor_sum += j
if j != i // j:
factor_sum += i // j
if factor_sum == i:
print(i)
java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
for (int i = 2; i <= n; i++) {
int sum = 1;
for (int j = 2; j <= Math.sqrt(i); j++) {
if (i % j == 0) {
sum += j;
if (j != i / j) {
sum += i / j;
}
}
}
if (sum == i) {
System.out.println(i);
}
}
}
}