看到好多大佬用了埃氏筛 or 线性筛,本蒟蒻表示没有这个必要(一来太麻烦,暴力能过;二来嘛……我不会呀)
那么我们来讲讲暴力
T质数包含三个不同因子,那么那些书包含三个因子呢?
QwQ就是质数的平方啦~
所以我们只要判断一下这个数的平方根是否为质数就OK了
昨天的洛谷日报——《浅谈素数筛优化》中提到了一个小技巧,就是有关6的优化:除2、3外的任何质数,除以6的余数一定是1或5~~~
把这个小技巧用到程序里~~~
#include <bits/stdc++.h>
using namespace std;
bool ss(long long a)//判断素数QwQ
{
if(a==1)return 0;
if(a==2||a==3)return 1;
if(a%6!=1&&a%6!=5)return 0;
for(long long i=5; i<=sqrt(a); i+=6)
if(a%i==0||a%(i+2)==0)return 0;
return 1;
}
int main()
{
long long n,k;//O(1)的空间QwQ
cin>>n;
for(int i=0; i<n; i++)
{
cin>>k;
if(k==1)//特判(不加也AC)
{
printf("NO
");
continue;//跳出当前循环变量(记得老师是这么讲的)
}
long long t=(int)sqrt(k);
if(t==sqrt(k)&&ss(t))//QwQ这个就是判断
printf("YES
");
else printf("NO
");
}
return 0;
}