亲密数
如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。求3000以内的全部亲密数。
我们只要确定一个数A,找出数A的因子并求和,再求出和的因子,并相加并判断是否等于数A即可求出亲密数。
#include<iostream>
using namespace std;
int main()
{
int x,y;
cout<<"3000以内的全部亲密数为:"<<endl;
for(int i=1;i<3000;i++)//该循环用于穷举3000以下的数
{
x=0;
for(int j=1;j<i;j++)//该循环用于求出i的因子并进行相加
{
if(i%j==0)
{
x+=j;
}
}
y=0;
for(int k=1;k<x;k++)//该循环用于找出i的因子之和的因子
{
if(x%k==0)
{
y+=k;
}
}
if(i==y&&x<y)//条件判断找出亲密数
{
cout<<x<<"和"<<y<<"是一对亲密数"<<endl;
}
}
return 0;
}
运行结果如下: