题目描述
键盘输入N,N在2至2000之间,求2至N中的亲密数对,就是A的因子和等于B,B的因子和等于A,且A≠B。 如48和75是亲密数对。48的因子和为2+3+4+6+8+12+16+24=75,而75的因子和为3+5+15+25=48。
输入
只有一行,为一个整数N( 2<=N<=2000 )
输出
输出若干行,每行两个整数(用一个空格隔开)。
样例输入
200
样例输出
48 75
75 48
140 195
195 140
AC代码:
#include<iostream>
#include<cmath>
using namespace std;
int he(int n) {
int i, s = 0;
for (i = 2; i <= sqrt(n); i++) {
if (n % i == 0) {
if (n / i != i) {
s = s + n / i + i;
} else s = s + i;
}
}
return s;
}
int main() {
int n, i;
cin >> n;
for (i = 1; i <= n; i++) {
if (i == he(he(i)) && i != he(i) && he(i) <= n)
cout << i << " " << he(i) << endl;
}
}