21xrx.com
2025-03-28 20:23:53 Friday
文章检索 我的文章 写文章
C++编程:求解3000以内的全部亲密数
2023-06-26 18:04:24 深夜i     17     0
C++ 亲密数 编程 求解 3000

亲密数是指两个正整数中,一个数的全部因子之和等于另一个数,且另一个数的所有因子之和等于第一个数。例如,220和284就是一对亲密数,因为220的所有因子(除去自身)之和为284,而284的所有因子(除去自身)之和为220。

在C++编程中,我们可以通过编写程序来求解3000以内的全部亲密数。首先,我们需要编写一个函数来计算一个数的所有因子之和。代码如下:

int divisorSum(int n) {
  int sum = 0;
  for (int i = 1; i < n; i++) {
    if (n % i == 0) {
      sum += i;
    }
  }
  return sum;
}

然后,我们可以编写主函数来寻找亲密数。我们可以从2开始遍历到3000,对于每个数n,我们计算其因子之和div1,再计算div1的因子之和div2,如果div2等于n且div1不等于n,则n和div1就是一对亲密数。代码如下:

#include <iostream>
int divisorSum(int n) {
  int sum = 0;
  for (int i = 1; i < n; i++) {
    if (n % i == 0) {
      sum += i;
    }
  }
  return sum;
}
int main() {
  for (int n = 2; n < 3000; n++) {
    int div1 = divisorSum(n);
    int div2 = divisorSum(div1);
    if (div2 == n && div1 != n)
      std::cout << n << " 和 " << div1 << " 是一对亲密数" << std::endl;
    
  }
  return 0;
}

运行程序后,我们可以得到以下结果:

220 和 284 是一对亲密数
284 和 220 是一对亲密数
1184 和 1210 是一对亲密数
1210 和 1184 是一对亲密数
2620 和 2924 是一对亲密数
2924 和 2620 是一对亲密数

因此,3000以内的全部亲密数为:(220, 284)、(1184, 1210)和(2620, 2924)。通过C++编程,我们可以方便地求解各种数学问题,包括亲密数。

  
  

评论区

    相似文章
请求出错了