萌新求助
  • 板块学术版
  • 楼主HMR202001
  • 当前回复5
  • 已保存回复5
  • 发布时间2022/3/11 20:44
  • 上次更新2023/10/28 06:50:29
查看原帖
萌新求助
575093
HMR202001楼主2022/3/11 20:44

一个搞不清素数筛的蒟蒻来这里求助一道题

质数的询问,给定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;
}
2022/3/11 20:44
加载中...