普通线性筛选素数

#include<stdio.h>
#include<iostream>
#include<string.h>
#define MAX 100000
long long su[MAX],cnt=1;
bool isPrime[MAX];
void prime()
{
	memset(isPrime,1,sizeof(isPrime));
	memset(su,0,sizeof(isPrime));
	isPrime[0]=isPrime[1]=0;
	int cnt=0;
	for(long long i=2;i<=MAX;i++)
	{
		if(isPrime[i])
		{
			cnt++;
			for(long long j=i*2;j<=MAX;j+=i)
			{
				isPrime[j]=0;
			}
			if(isPrime[cnt])
			{
				su[i]=1;
			}
		}
		 
	
	}
	
}
int main()
{

    int num;
    int n;
    prime();
    scanf("%d",&n);
    while(n--)
    {
    	scanf("%d",&num);
    if(su[num])
    	printf("YES");
    else
        printf("NO");
	}
    
	
	
	return 0;
 } 

猜你喜欢

转载自blog.csdn.net/weixin_42173193/article/details/80860409
今日推荐