21xrx.com
2024-12-22 21:47:15 Sunday
登录
文章检索 我的文章 写文章
C++程序实现亲密数
2023-07-14 06:36:33 深夜i     --     --
C++ 程序实现 亲密数

亲密数是指两个正整数中,彼此的和等于另一个数的正因数之和。在数学上,如果两个正整数a和b,且a的所有正因数(不包括a本身)之和等于b,b的所有正因数(不包括b本身)之和等于a,那么a和b被称为亲密数。

亲密数在数学领域中是一个非常有趣和有价值的研究领域,它有丰富的理论和实际应用。而C++作为一门强大的编程语言,可以轻松实现亲密数的计算并且可以优化算法的执行效率。

下面是一段简单的C++程序,可以用来计算整数范围内的亲密数。这个程序的实现主要是通过逐个枚举每一对数,然后分别计算它们的因子和并比较是否相等。


#include <iostream>

#include <vector>

// 计算整数n的因子和

int getFactorSum(int n)

{

  int sum = 1;

  for(int i = 2; i * i <= n; i++)

  {

    if(n % i == 0)

    {

      sum += i;

      if(n / i != i) sum += n / i;

    }

  }

  return sum;

}

//寻找亲密数

void findAmicableNumbers(int n)

{

  std::vector<int> factorSum(n + 1);

  for(int i = 1; i <= n; i++)

  {

    factorSum[i] = getFactorSum(i);

  }

  for(int i = 1; i <= n; i++)

  {

    int j = factorSum[i];

    if(j <= n && factorSum[j] == i && i != j)

    

      std::cout << i << "和" << j << "是一对亲密数" << std::endl;

    

  }

}

int main()

{

  int n = 10000;

  findAmicableNumbers(n);

  return 0;

}

在上面的C++程序中,findAmicableNumbers函数用于查找整数范围内的亲密数。它首先调用getFactorSum函数计算每个整数的因子和,并将结果保存在factorSum向量中。接下来,它通过枚举每一对数,分别计算它们的因子和并比较它们是否相等,如果是亲密数,则打印出结果。

在该程序中,我们通过使用vector容器来保存每个数字的因子和,而不是每次重新计算。这种优化可以使程序变得更加高效而且避免重复计算。

总结而言,C++是一个功能强大的编程语言,可以轻松实现亲密数的计算。通过运用算法和优化,我们可以写出高效且功能强大的程序,进一步探索并将亲密数的应用领域扩展到更多领域中。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复