这个题比较简单,只需要利用循环找出A、B的真约数,然后相加进行判断,是否两个数中的任何一个数都是另一个数的真约数之和,如果是就输出YES,否则输出NO。
下面贴上已AC的C语言代码:
#include<stdio.h>
#include<math.h>
int main()
{
int M,A,B,i,sum;
scanf("%d",&M); //输入M,有M个测试样例
while(M--)
{
sum=0;
scanf("%d%d",&A,&B);
for(i=2;i<=sqrt(A);i++)
{
if(A%i==0)
sum=sum+i+A/i;
}
if(sum+1==B) //1也算是A的约数,所以别忘了加上1
{
sum=0;
for(i=2;i<=sqrt(B);i++)
{
if(B%i==0)
sum=sum+i+B/i;
}
if(sum+1==A)
printf("YES\n");
else
printf("NO\n");
}
else
printf("NO\n");
}
return 0;
}