时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
牛妹是一个爱吃素的小女孩,所以很多素数都害怕被她吃掉。
一天,两个数字aa和bb为了防止被吃掉,决定和彼此相乘在一起,这样被吃掉的风险就会大大降低,但仍有一定的可能被吃掉,请你判断他们相乘后是否仍有被吃掉的风险。
也就是说,请你判断a\times ba×b是否是素数。
素数是指大于11的正整数中,有且仅有两个因子的数。
输入描述:
输入第一行是一个整数T(1\leq T\leq 10)T(1≤T≤10),表示测试组数。
接下来TT行,每一行两个整数a,b(1\leq a,b\leq 10^{11})a,b(1≤a,b≤10
11
)。
输出描述:
对于每一行输入,若输入满足a\times ba×b是素数,输出一行"YES",否则输出一行"NO"(没有引号)。
示例1
输入
复制
3
2 3
1 7
1 4
输出
复制
NO
YES
NO
注意:只需要判断一个值是否为素数即可,不然会超出long long的范围
#include <bits/stdc++.h>
using namespace std;
long long a,b;
bool judge(long long a){
if(a<2) return false;
for(long long i=2;i<=sqrt(a);i++){
if(a%i==0) return false;
}
return true;
}
int main(){
int t;
cin>>t;
while(t--){
cin>>a>>b;
if((judge(a)&& b==1) ||(judge(b) && a==1)) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}