完全数分类

实践练习C++17

一个数的真因子,是除了它自身以外的正因子。例如,15 的真因子是 1、3、5,其和为 9。比较真因子之和与原数,可以对正整数分类。

任务说明

按照尼科马库斯提出的正整数分类,判断给定数是完全数、过剩数还是亏数。

希腊数学家尼科马库斯根据真因子和,将正整数分为完全数、过剩数、亏数。真因子和是除自身之外所有正因子的和,例如 15 的真因子和为 1 + 3 + 5 = 9。

完全数

若数字等于真因子和,就是完全数。例如:

  • 6:1 + 2 + 3 = 6。
  • 28:1 + 2 + 4 + 7 + 14 = 28。

过剩数

若数字小于真因子和,就是过剩数。例如:

  • 12:真因子和 1 + 2 + 3 + 4 + 6 = 16。
  • 24:真因子和 1 + 2 + 3 + 4 + 6 + 8 + 12 = 36。

亏数

若数字大于真因子和,就是亏数。例如:

  • 8:真因子和 1 + 2 + 4 = 7。
  • 质数都是亏数。

实现任务

实现完全数判断,并根据本题提供的 C++ 接口,同时处理过剩数与亏数分类。