题解
2024-04-08 18:39:52
发布于:江苏
8阅读
0回复
0点赞
三个因子肯定是平方数
但是要排除一种可能
6*6=36
4*4=16
这种因子是合数,有其他因数
所以他的平方也就也有其他因数
所以必须是质因子
上代码
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n;
bool prime(int n){//判断素数
if(n<=1)return 0;
if(n==2)return 1;
if(n%2==0)return 0;
for(int i=3;i*i<=n;i+=2){
if(n%i==0)return 0;
}
return 1;
}
signed main(){
cin>>n;
while(n--){
int x;
cin>>x;
if(x==1)cout<<"NO"<<endl;
else{
double y=sqrt(x);
if((long long)(y)==y){//判断这个数是否为平方数
if(prime(y))cout<<"YES"<<endl;//还要判断是不是质数
else cout<<"NO"<<endl;
}
else cout<<"NO"<<endl;
}
}
return 0;
}
这里空空如也
有帮助,赞一个