给定两个不同的正整数 a 和 b 。如果 a 的因子和等于 b 、b 的因子和等于 a 、且 a ≠ b 、则 a 和 b 一对亲近数。给定正整数 N ,求 2-N 中的亲近数对。 输入描述 第 1 行一个正整数 N 。 输出描述 输出许多行、每行有两个用一个空格隔离的正整数、表示一对亲近数 希望能用c++写码内容。以下是用C++编写的解决方案:

#include <iostream>
#include <vector>
using namespace std;

// &#x8ba1;&#x7b97;&#x4e00;&#x4e2a;&#x6570;&#x7684;&#x56e0;&#x5b50;&#x548c;
int sumOfDivisors(int num) {
    int sum = 1;
    for (int i = 2; i * i <= num; i++) {
        if (num % i == 0) {
            sum += i;
            if (i * i != num)
                sum += num / i;
        }
    }
    return sum;
}

vector<pair<int, int>> findAmicablePairs(int N) {
    vector<pair<int, int>> pairs;
    for (int a = 2; a <= N; a++) {
        int b = sumOfDivisors(a);
        if (b > a && sumOfDivisors(b) == a) {
            pairs.push_back(make_pair(a, b));
        }
    }
    return pairs;
}

int main() {
    int N;
    cin >> N;
    
    vector<pair<int, int>> pairs = findAmicablePairs(N);
    for (int i = 0; i < pairs.size(); i++) {
        cout << pairs[i].first << " " << pairs[i].second << endl;
    }
    
    return 0;
}

该解决方案首先定义了一个函数sumOfDivisors、用于计算一个数的因子和。然后定义了另一个函数findAmicablePairs、用于找到2-N中的亲近数对。在main函数中、首先读取输入的值N、然后调用findAmicablePairs函数找到亲近数对、并将结果输出。

寻找亲密数对 - C++ 代码实现

原文地址: https://www.cveoy.top/t/topic/quLQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录