/*
不同的正整数 a b
a的真因数之和等于b
b的真因数之和等于a
真因数是包括1,但不包括 这个数本身的全部因数
6 :1 2 3
求1-3000之间的全部亲密数对
*/
#include<iostream>
using namespace std;
int sum(int x) //自定义求真因数之和的函数
{
int s=0;
for(int i=1;i<=x/2;i++)
if(x%i==0) s+=i;
return s;
}
int main()
{
int a,b;
for(a=1;a<=3000;a++) //遍历1~3000之间的所有数
{
b=sum(a); //将第a个数的真因数之和存放于b
if( sum(b)==a && a != b ) //判断b的真因数之和是否等于a
if( a<b && b<= 3000 ) //保证一对亲密数只输出一次
cout<<a<<" "<<b<<endl;
}
return 0;
}