亲密数对
题目描述
给定两个不同的正整数a和b,如果a的因子(除了1和它本身)和等于b,b的因子(除了1和它本身)和等于a,且a≠b,则a和b为一对亲密数。给定正整数N,求2~N中的亲密数对。
输入
一个正整数N(2≤N≤20000)。
输出
输出若干行,每行两个数,两数之间用一个空格分隔,表示一对亲密数。
样例输入
200
样例输出
48 75
75 48
140 195
195 140
代码
#include<bits/stdc++.h>
using namespace std;
int o(int n)
{
int s=0;
for(int i=2;i<n;i++)
if(n%i==0) s+=i;
return s;
}
int main()
{
int n,x;
cin>>n;
for(int i=48;i<=n;i++)
{
x=o(i);
if(o(x)==i&&x!=i&&x<=n&&i<=n) cout<<i<<" "<<x<<"\n";
}
return 0;
}