C++ 亲密数对算法 - 找出 2 到 N 之间的亲密数对
C++ 亲密数对算法 - 找出 2 到 N 之间的亲密数对
本程序使用 C++ 语言实现寻找亲密数对的算法,用户输入一个整数 N(2 到 2000 之间),程序会输出 2 到 N 之间的所有亲密数对。亲密数对是指两个数,其中一个数的真因子之和等于另一个数,反之亦然。
输入格式 一个整数 N。
输出格式 每行输出一对亲密数对,较小的数在前。
样例输入 300
样例输出 220 284 1184 1210 2620 2924 5020 5564 6232 6368
提示 亲密数对的数量不超过 10 个,按照从小到大的顺序输出。
代码示例
#include <iostream>
using namespace std;
// 计算一个数的真因子和
int sumOfProperDivisors(int num) {
int sum = 0;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
sum += i;
if (i * i != num) {
sum += num / i;
}
}
}
return sum;
}
int main() {
int N;
cin >> N;
// 遍历 2 到 N 的所有数
for (int i = 2; i <= N; i++) {
for (int j = i + 1; j <= N; j++) {
// 如果 i 和 j 互为亲密数
if (sumOfProperDivisors(i) == j && sumOfProperDivisors(j) == i) {
// 输出亲密数对
cout << i << ' ' << j << endl;
}
}
}
return 0;
}
原文地址: https://www.cveoy.top/t/topic/owb7 著作权归作者所有。请勿转载和采集!