8、Problem Q亲和数
简要题意:
220的所有真约数(即不是自身的约数)之和为:
1+2+4+5+10+11+20+22+44+55+110=284。
而284的所有真约数为1、2、4、71、 142,加起来恰好为220,,称这样的数为亲和数。输入一个数,判断是否是亲和数
解题思路:
先写一个大的循环,确定输入的数据组数为M,运用for循环分别找出A,B的所有真约数之和,最后判断是否A的真约数等于B,B的真约数等于A同时成立。
解题细节:
注意输出时YES和NO均为大写;
在求真约数和时,要给A,B分别各用一个for循环来求,不能写到一个循环里求。
源码:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int n,m,q,p,t;
cin>>n;
while(n--)
{
cin>>m>>q;
p=0;
t=0;
for(int i=1;i<m;i++)
{
if(m%i==0)
p+=i;
}
for(int j=1;j<q;j++)
{
if(q%j==0)
t+=j;
}
if(p==q&&t==m)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}