21xrx.com
2024-09-19 10:07:40 Thursday
登录
文章检索 我的文章 写文章
C++编程:求解3000以内的全部亲密数
2023-06-26 18:04:24 深夜i     --     --
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++编程,我们可以方便地求解各种数学问题,包括亲密数。

  
  

评论区

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