zoukankan      html  css  js  c++  java
  • 线性筛板子

    题目描述

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

    输入格式

    第一行包含两个正整数N、M,分别表示查询的范围和查询的个数。

    接下来M行每行包含一个不小于1且不大于N的整数,即询问该数是否为质数。

    输出格式

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

    注意1 已经被筛掉

    如果%==0 则停止 会被更大的数筛掉

    时间复杂度O(n)

    code:

    //
    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long 
    ll prime[10000010],v[10000010],n,m;
    ll len=0;
    void shai()
    {
        v[1]=1;
        for(int i=2;i<=n;i++)
        {
            if(!v[i]) prime[++len]=i;
            for(int j=1;prime[j]*i<=n&&j<=len;j++)
            {
                v[prime[j]*i]=1;
                if((i%prime[j])==0)
                break;
            }
        }
        
    }
    int main()
    {
        cin>>n;
        shai();
        ll x;
    
        cin>>m;
        for(int i=1;i<=m;i++)
        {
            cin>>x;
            if(v[x])
            puts("No");
            else
            puts("Yes");
        }
        
    }
    刀剑映出了战士的心。而我的心,漆黑且残破
  • 相关阅读:
    JS解析json数据(如何将json字符串转化为数组)
    c/c++学习笔记(11)
    c/c++学习笔记(14)
    c/c++学习笔记(9)
    c/c++概念整理1
    c/c++学习笔记(10)
    c/c++学习笔记(2)
    《c和指针》笔记3
    c/c++学习笔记(3)
    c/c++学习笔记(13)
  • 原文地址:https://www.cnblogs.com/OIEREDSION/p/11314145.html
Copyright © 2011-2022 走看看