一个搞不清素数筛的蒟蒻来这里求助一道题
质数的询问,给定n个正整数,输出这些正整数是否为质数(是Y否N)。每个正整数都不超过10000000。
样例:
输入
5
5 185 3 11 92
输出
YNYYN
不知道为什么测试点只能对一半
代码:
#include<bits/stdc++.h>
using namespace std;
int a[10000005]={0};
void isprime(int n){
for(int i=2;i<=sqrt(n);i++){
if(a[i]==0){
for(int j=i;j<=n/i;j++){
a[i*j]=1;
}
}
}
return;
}
int main(){
isprime(10000000);
int n,x;
std::ios::sync_with_stdio(0);
cin>>n;
for(int i=0;i<n;i++){
cin>>x;
if(a[x]==0){
cout<<"Y";
}else{
cout<<"N";
}
}
return 0;
}