亲密数是具有特殊性质的整数。亲密数展示了两个整数之间通过因子的密切联系。
如果整数3 的因子和等于整数匕整数1)的因子和等于整数3, 因子包括1 但不包括本身,且 3 不 等 于 匕 则 称 3、1)为亲密数对。
例如,220 和 204 便是一对亲密数,因为其满足如下规则。
220 的各个因子之和为:1+2+4+5+10+11+20+22+44+55+110=204。
204 的各个因子之和为:1+2+4+71 + 142=220。
另外,1184和 1210是一对亲密数,因为其满足如下规则。
1184 的各个因子之和为:1+2+4+8+16+32+37+74+148+296+592=1210。
1210 的各个因子之和为:1+2+5+10+11+22+55+110+121+242+605=1210
下面是C++代码实现:
#include<iostream>
using namespace std;
void caculate(int range) {
int A[100],B[100],countA,countB, sum1,sum2;
for (int i = 1; i <= range; i++) {
countA = 0;
countB = 0;
sum1 = 0;
sum2 = 0;
for (int j = 1; j <= i / 2 + 1; j++) {
if (i%j == 0) {
A[countA++] = j;
sum1 += j;
}
}
for (int k = 1; k <= sum1 / 2 + 1; k++) {
if (sum1%k == 0) {
B[countB++] = k;
sum2 += k;
}
}
if (sum2 == i && i != sum1) {
cout << i << "和" << sum1 << "是亲密数" << endl;
cout << i << "的真因子是:"<<A[0];
for (int a = 1; a < countA; a++) {
cout << "*" << A[a] << " ";
}
cout << endl;
cout << sum1 << "的真因子是:" << B[0];
for (int b = 1; b < countB; b++) {
cout << "*" << B[b] << " ";
}
cout << endl << endl;
}
}
}
int main() {
caculate(10000);
system("pause");
}
执行结果: