很水的一道题,做这道题的时候,只要注意下真约数的概念就可以了,因为我们知道,真约数就是说这个数字原本的所有的约数出去本身后的约数,
比如说,6的约数是 1 2 3 6,而6的真约数是1 2 3,这就是在判约数的时候注意下等号的位置就行了。
# include<cstdio>
# include<iostream>
# include<cstring>
using namespace std;
# define MAX 600000
int a[MAX];
int f( int x )
{
int sum = 0;
for ( int i = 1;i < x;i++ )
{
if ( x%i == 0 )
sum+=i;
}
return sum;
}
int main(void)
{
int t;cin>>t;
memset(a,0,sizeof(a));
while ( t-- )
{
int a,b;
cin>>a>>b;
int m = f(a);
int n = f(b);
if ( m == b&&n == a )
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}