zoukankan      html  css  js  c++  java
  • 【模板】线性筛(洛谷P3383)

    Description

      如题,给定一个范围(N),你需要处理(M)个某数字是否为质数的询问(每个数字均在范围(1-N)内)

    Input

      第一行包含两个正整数(N)(M),分别表示查询的范围和查询的个数。
      接下来(M)行每行包含一个不小于1且不大于(N)的整数,即询问该数是否为质数。

    Output

      输出包含(M)行,每行为(Yes)(No),即依次为每一个询问的结果。

    Solution

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    int n,m,x,cnt,prime[5000010];
    bool isprime[10000010];
    inline int read()
    {
    	int ans=0;
    	char ch=getchar();
    	while (ch<'0' || ch>'9') ch=getchar();
    	while (ch>='0' && ch<='9')
    	{
    		ans=ans*10+ch-'0';
    		ch=getchar();
    	}
    	return ans;
    }
    void getprime()
    {
    	isprime[1]=1;
    	for (int i=2;i<=n;i++)
    	{
    		if (!isprime[i]) prime[++cnt]=i;
    		for (int j=1;j<=cnt && i*prime[j]<=n;j++)
    		{
    			isprime[i*prime[j]]=1;
    			if (i%prime[j]==0) break;
    		}
    	}
    }
    int main()
    {
    	n=read(),m=read();
    	getprime();
    	while (m--)
    	{
    		x=read();
    		if (isprime[x]) printf("No
    "); else printf("Yes
    ");
    	}
    	return 0;
    }
    
    
  • 相关阅读:
    N-Queens II
    N-Queens
    Insertion Sort List
    Combination Sum
    Next Permutation
    Permutations II
    Unique Paths II
    【转】Python之mmap内存映射模块(大文本处理)说明
    【转】python之模块array
    【转】python 退出程序的方式
  • 原文地址:https://www.cnblogs.com/Code-Geass/p/9931641.html
Copyright © 2011-2022 走看看