问题描述:
给定2个不同的正整数a和b,如果a的因子(不含1和a本身)和等于b,b的因子(不含1和b本身)和等于a,且a不等于b,则a和b为一对亲密数。给定正整数N,求2-N中的亲密数对。
输入格式:
第1行一个正整数N,1<=N<=2000。
输出格式:
输出若干行,每行有两个用一个空格隔开的正整数,表示一对亲密数。
输入样例:
200
输出样例:
48 75
75 48
140 195
195 140
#include<iostream>
using namespace std;
//判断n的因数和等于m
bool qinmishu(int n,int m){
int a,b;
int i,j,sum=0;
for(i=2;i<=n/2;i++)
{
if(n%i==0) sum+=i;
}
if(sum==m) return true;
else return false;
}
//求自然数n的因子和
int yinzihe(int n){
int i,sum=0;
for(i=2;i<=n/2;i++)
if(n%i==0)
sum+=i;
return sum;
}
int main(){
int n,m,i;
cin>>n;
for(i=1;i<=n;i++)
{
m=yinzihe(i);
//如果i的因子和是m,m的因子和是i,并且i不等于m,并且i,m的值都小于等于n
if(qinmishu(i,m)&&qinmishu(m,i)&&m<=n&&i!=m)
cout<<i<<" "<<m<<endl;
}
return 0;
}