C++ 中的杰出数

2025 年 5 月 15 日 | 阅读 4 分钟

当一个整数是特定于除数时,它被认为是奇妙的。如果一个数的真因子(除了 N 本身)之和等于另一个数 M,并且 M 是 N 的因子,那么这个数就被称为奇妙数。除数和与可除性之间存在关系。为了在 C++ 中找到奇妙数,需要计算除数,将它们加起来,并确认满足可除性要求。除了提高你编写循环和条件检查的编程技能以及实现数学算法的计算效率之外,这个主题还提供了一个有趣的方式来深入研究数论的基础知识,包括模运算和除数 函数

数学条件

N 的真因子之和 = M,且 M∣N。

考察 N = 12。它的真因子是 1、2、3、4、6,它们的和是 16。虽然在这种情况下没有,但如果 16 能整除 12,那么 12 将是奇妙的。

输入:N = 12

输出:是

说明

12 的真因子是 1、2、3、4、6 和 12

sigma(N) = 1 + 2 + 3 + 4 + 6 + 12 = 28

sigma(N) – 2D’ = 2N

28 – 2*2 = 2*12

24 == 24

在计算数学和除数属性的研究中,奇妙数是一个值得关注的课题。它可以通过在 C++ 中高效地计算除数及其和并验证可除性要求来实现。将这个想法付诸实践有助于你理解条件检查、模运算和除数算法。由于这些特性,奇妙数是数学编程任务的一个有趣课题。

算法

计算 N 的除数之和

  • 初始化变量 sumDivisors = 0。
  • 对于每个整数
  • i 从 1 到 N 的平方根
  • 如果 N%i==0
  • 将 i 加到 sumDivisors。
  • 如果 i≠N/i,则将其加到 sumDivisors。
  • 最后将 N 和 1 加到 sumDivisors。

检查条件 σ(N)−2D=2N

  • 对于 N 的每个除数 D,从 1 到 N 的平方根
  • 如果 N%D==0,检查是否 σ(N)−2D==2N。
  • 如果为真,返回“是”并终止。

如果没有真因子满足条件,则返回“否”。

伪代码

示例

让我们举一个例子来说明 C++ 中的奇妙数。

输出

If the number is 12
12 is an admirable number.
If the number is 18
18 is not an admirable number.
If the number is 28
28 is not an admirable number.

结论

在数论中,奇妙数的概念很有趣。当一个数满足关于其除数之和的特定要求时,就会出现这些数。为了找出一个数是否是奇妙的,我们首先计算其所有除数之和,然后寻找一个合适的除数,使得该和减去该除数的两倍等于该数的两倍。这个问题的研究有助于理解除数函数及其性质,因为它为数学推理和算法开发提供了一个有用的练习。上面看到的 C++ 方法以高效的方式测试奇妙数,使用除数求和和数学条件等基本思想,从而为数论如何应用于实际编码问题提供了一个很好的例子。


下一主题C++ 中的特性