#12010. 完数

完数

Problem J22 : Perfect Numbers / 完数

**版权信息: JLOJ2351 · 枚举法基础练习


任务总览

任务名称 时间限制 内存限制 分数
完数 1 sec 1024 MB 10 points

题目描述

一个正整数如果恰好等于 它所有真因子的和 ,则称它为一个 完数(Perfect Number) 。

例如:

  • 6 的因子为 1、2、3,且 6=1+2+36 = 1 + 2 + 3,因此 6 是完数;
  • 28 的因子为 1、2、4、7、14,且 28=1+2+4+7+1428 = 1 + 2 + 4 + 7 + 14,因此 28 也是完数。

输入格式

一个正整数 nn2n<10002 \leq n < 1000),表示考察的范围上限。


输出格式

输出所有不超过 nn 的完数及其因子。

每个完数占一行,格式如下:

<完数> its factors are <因子1> <因子2> ... <因子k>

输入输出样例

输入示例

100

输出示例

6 its factors are 1 2 3
28 its factors are 1 2 4 7 14

题目分析与解法

本题可通过 暴力枚举法 解决:

  1. 枚举所有 i=2i = 2nn
  2. 对于每个 ii,判断其真因子(1i/21 \sim i / 2);
  3. 如果所有真因子的和恰好等于 ii,则输出该数及其因子。

时间复杂度分析

操作 复杂度
枚举每个 ii O(n)O(n)
对每个 ii 枚举因子 jj O(n/2)O(n/2)
总复杂度 O(n2)O(n^2)n<1000n < 1000 时可接受)