更不正经题解|又又是好数
2024-04-08 17:05:40
发布于:广东
13阅读
0回复
1点赞
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
long long Sqrt1(long long x) {
long long l=0,r=x,ans=0;
while (l<=r) {
long long mid=(l+r)>>1;
if (mid*mid<=x) {
l=mid+1;
ans=max(ans,mid);
}else if (mid*mid>x) {
r=mid-1;
}
}
return ans;
}
int iszs(long long x) {
if (x==0||x==1) return 0;
long long endnum=sqrt(x);
for (long long i=2;i<=endnum;i++) {
if (x%i==0) {
return 0;
}
}
return 1;
}
int main() {
int T;
scanf("%d",&T);
while (T--) {
long long num;
scanf("%lld",&num);
long long x=sqrt(num);
if (x==-1||x*x!=num) {
printf("NO\n");
}else {
if (iszs((long long)x)!=1) {
printf("NO\n");
}else {
printf("YES\n");
}
}
}
return 0;
}
这里空空如也
有帮助,赞一个