打卡

1.问题:两个不同的自然数A和B,如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。求3000以内的全部亲密数。

2.思路:通过函数求出每个数的因子之和并判断,然后穷举1到3000的数即可。

3.程序流程图:

 

4.代码实现:

#include<iostream>
using namespace std;

int fact(int x,int y)
{
int k=0;
int q=0;
for(int i=1;i<=x/2;i++){
if(x%i==0)
k=k+i;
}
for(int i=1;i<=y/2;i++){
if(y%i==0)
q=q+i;
}
if(k==y&&q==x)
return 1;
else
return 0;
}
int main()
{
int count=0;
for(int i=1;i<=3000;i++){
for(int j=1;j<=3000;j++){
if(fact(i,j)&&i<j)
{
cout<<i<<"和"<<j<<"是一对亲密数"<<endl;
count++;
}
}
}
cout<<"总计有"<<count<<"对亲密数"<<endl;
return 0;
}

posted @ 2023-05-15 20:46  £剑影メ随见彡  阅读(16)  评论(0)    收藏  举报