寻找亲密数对 - C++ 代码实现
给定两个不同的正整数 a 和 b 。如果 a 的因子和等于 b 、b 的因子和等于 a 、且 a ≠ b 、则 a 和 b 一对亲近数。给定正整数 N ,求 2-N 中的亲近数对。 输入描述 第 1 行一个正整数 N 。 输出描述 输出许多行、每行有两个用一个空格隔离的正整数、表示一对亲近数 希望能用c++写码内容。以下是用C++编写的解决方案:
#include <iostream>
#include <vector>
using namespace std;
// 计算一个数的因子和
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函数找到亲近数对、并将结果输出。
原文地址: https://www.cveoy.top/t/topic/quLQ 著作权归作者所有。请勿转载和采集!