题目描述
如果a的因子和等于b,b的因子和等于a,且a≠b,则称a,b为亲密数对。 比如220的所有真约数(即不是自身的约数)之和为: 1+2+4+5+10+11+20+22+44+55+110=284。 284的所有真约数和为: 1+2+4+71+142=220。 你的任务就编写一个程序,判断给定的两个数是否是亲和数
输入
输入数据第一行包含一个数M,接下有M行,每行一个实例,包含两个整数A,B; 其中 0≤A,B≤99999。
输出
对于每个测试实例,如果A和B是亲和数的话输出YES,否则输出NO。
分析:
直接将每一个因子的和算出来,判断一下就好了。
#include"stdio.h"
int main()
{
long long a,b,sa,sb,i,j,k,n;
while(~scanf("%lld",&n))
{
while(n--)
{
scanf("%lld%lld",&a,&b);
sa=sb=0;
for(i=1; i<a; i++)
if(a%i==0)
sa=sa+i;
for(i=1; i<b; i++)
if(b%i==0)
sb=sb+i;
if(sa==b&&sb==a)
printf("YES\n");
else
printf("NO\n");
}
}
}