题目
找出 1000 以内的所有完全数并输出。完全数(Perfect number)是指一个正整数恰好等于除了它本身以外的所有真因子之和(例如 6 = 1 + 2 + 3)。
输入格式:无键盘输入。
输出格式:按升序输出 1000 以内的完全数,每个数字后跟空格,最后换行。
数据范围与约定:测试范围 [2, 1000]。
思路与算法
1. 真因子求和
对于每个数 n,1 必为真因子。遍历 2 到 i * i <= n,成对累加因子 i 和 n // i(完全平方数时不重复累加)。
2. 结果判定
若因子和等于原数,则该数为完全数(1000 以内有 6, 28, 496)。
完整程序
# 遍历四位数判断 abcd = (ab + cd)^2
for i in range(1000, 10000):
hi = i // 100 # 前两位
lo = i % 100 # 后两位
if (hi + lo) ** 2 == i:
print(i)运行示例
输出:
1
6
28
496