[无辜的小眼神]不是。。我写欧拉筛怎么你了
求助,感谢
#include<bits/stdc++.h>
using namespace std;
#define int long long
inline int read()
{
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch>='0' && ch<='9')
x=x*10+ch-'0',ch=getchar();
return x*f;
}
void write(int x)
{
if(x<0)
putchar('-'),x=-x;
if(x>9)
write(x/10);
putchar(x%10+'0');
return;
}
const int maxN = 1E6;
int T,n,Prime[maxN+10],sum,m;
bool isPrime[maxN+10];
signed main(){
memset(isPrime,1,sizeof isPrime);
isPrime[1]=0;
for(int i=2;i<=maxN;++i){
if(isPrime[i])Prime[++sum]=i;
for(int j=1;j<=sum&&i*Prime[j]<=maxN;++j){
isPrime[i*Prime[j]]=0;
if(i%Prime[j]==0)break;
}
}
T=read(); while(T--){
n=read(); m=n;
set<int>nums;
while(m>1){
for(int i=1;i<=sum;++i){
if(m%Prime[i]==0){
nums.insert(Prime[i]);
m=m/Prime[i];
break;
}
}
}
write(nums.size()==2);
cout<<endl;
}
return 0;
}