/*2.第四章:找出亲密对数
【问题描述】求数n之内的亲密对数。所谓“亲密对数”,即A的所有因子(包含1但不包含其本身)之和等于B,而B的所有因子之和等于A。
【输入形式】
某个数字n。
【输出形式】
此数字n之内的亲密对数。
【样例输入】
400
【样例输出】
220 284
【样例说明】输出结果每行输出一对亲密数,剔除重复的,按每行第一个数的大小排序。*/
#include<iostream>
using namespace std;
int factors(int);
int main()
{
int sum, n;
cin>>n;
for(int a=2;a<n;a++)
{
sum=factors(a);
if((a==factors(sum))&&a<sum) //调用了两次factors()函数,先求a的因子和sum,在求sum的因子和
{
cout<<a<<" "<<sum<<endl;
}
}
return 0;
}
//定义一个求因子和的函数
int factors(int b)
{
int s=b/2; //找因子只需要判断到一半,另外一半只是在重复
int sum=0;
for(int i=1;i<=s;i++) //包括1但不包括本身
{
if(b%i==0)
sum+=i;
}
return sum; //返回因子和
}
找亲密对数
最新推荐文章于 2023-11-22 23:05:10 发布