8240 亲密数对1
描述
键盘输入 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。
输出描述
输出若干行,每行两个整数(用一个空格隔开),按照由小到大的顺序输出亲密数。
样例输入 1
200
样例输出 1
48 75 75 48 140 195 195 140
提示
#include<bits/stdc++.h> #define f(i,s,e) for(int i = s; i <= e; i++) #define ll long long using namespace std; const int N = 1e3+10,inf = 0x3f3f3f3f; int check(int n)//求n的所有因数和,但是因数不含自己本身 { int sum = 0; //求和 f(i,2,n - 1) //循环2 到 n - 1 if(n % i == 0) //判断i是不是n 的因数 sum += i; //把因数加上 return sum; } int main() { int n; cin >> n; f(i,2,n) //i就是第一个数 { int j = check(i); //j是第二个数 if(check(i) == j && check(j) == i && j != i && j <= n) cout << i << " " << j << endl; } return 0; }