21xrx.com
2024-12-22 22:39:24 Sunday
登录
文章检索 我的文章 写文章
C++编程实现求解300以内的亲密数对
2023-06-29 19:35:53 深夜i     --     --
C++ 编程 求解 亲密数 300以内

亲密数,也称为互为因数的数,指两个不同的正整数,它们的所有因子之和都等于对方,而不包括它本身。比如,220和284就是一对亲密数。

C++是一种高性能、高效的编程语言,广泛应用于各种计算机程序的编写中。我们可以使用它来求解300以内的亲密数对。

首先,我们需要编写一个函数来计算一个正整数的所有因子之和。代码如下:


int sum_of_factors(int n) {

  int sum = 1;

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

    if (n % i == 0) {

      sum += i;

      if (i*i != n) {

        sum += n / i;

      }

    }

  }

  return sum;

}

接下来,我们可以遍历所有300以内的数字,找到它们的亲密数对。具体来说,对于每个数字n,我们可以计算出它的因子之和s,然后再计算出s的因子之和t,如果t等于n,并且s不等于n,则n和s就是一对亲密数。代码如下:


for (int i=1; i<=300; i++) {

  int s = sum_of_factors(i);

  if (s > i && sum_of_factors(s) == i)

    cout << i << " and " << s << " are a pair of amicable numbers." << endl;

  

}

最终的完整代码如下:


#include <iostream>

using namespace std;

int sum_of_factors(int n) {

  int sum = 1;

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

    if (n % i == 0) {

      sum += i;

      if (i*i != n) {

        sum += n / i;

      }

    }

  }

  return sum;

}

int main() {

  for (int i=1; i<=300; i++) {

    int s = sum_of_factors(i);

    if (s > i && sum_of_factors(s) == i)

      cout << i << " and " << s << " are a pair of amicable numbers." << endl;

    

  }

  return 0;

}

当我们运行这段代码时,就会输出所有300以内的亲密数对。

综上所述,使用C++编程求解亲密数对并不难,只需编写一个函数来计算因子之和,然后遍历所有数字即可。这种方法同样可以应用于更大的数字范围。

  
  

评论区

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