• 欧拉筛素数


    欧拉筛素数:

    时间复杂度:O(n)

    主要思路:对于每一个合数,让他的最大的约数把他筛去

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<cmath>
     5 #define lli long long int 
     6 using namespace std;
     7 const int MAXN=10000001;
     8 void read(int &n)
     9 {
    10     char c='+';int x=0;bool flag=0;
    11     while(c<'0'||c>'9'){c=getchar();if(c=='-')flag=1;}
    12     while(c>='0'&&c<='9')
    13     x=(x<<1)+(x<<3)+c-48,c=getchar();
    14     flag==1?n=-x:n=x;
    15 }
    16 int n,m;
    17 bool check[MAXN];
    18 int prime[MAXN];
    19 int tot=0;
    20 int  main()
    21 {
    22     read(n);read(m);
    23     for(int i=2;i<=n;i++)
    24     {
    25         if(!check[i])
    26             prime[++tot]=i;
    27         for(int j=1;j<=tot;j++)
    28         {
    29             if(i*prime[j]>n)
    30                 break;
    31             check[i*prime[j]]=1;
    32             if(!i%prime[j])// 前面已经用i*prime[j]把他能筛去的筛去,
    33                             //如果满足情况的话说明前面被筛过
    34                 break;            
    35         }
    36     }
    37     for(int i=1;i<=m;i++)    
    38     {
    39         int q;
    40         read(q);
    41         if(q==1)
    42             printf("No
    ");
    43         else if(!check[q])
    44             printf("Yes
    ");
    45         else    
    46             printf("No
    ");
    47     }
    48     return 0;
    49 }
  • 相关阅读:
    软件工程实践总结
    用户使用调查报告
    Beta 冲刺 随笔合集
    Beta 冲刺 七
    Beta 冲刺 六
    Beta 冲刺 五
    Beta 冲刺 四
    Beta 冲刺 三
    Beta 冲刺 二
    Beta 冲刺 一
  • 原文地址:https://www.cnblogs.com/zwfymqz/p/7191902.html
Copyright © 2020-2023  润新知