素数判断(欧拉筛)

【原始】

   时间复杂度:O(nsqrt(n))

   代码:

1 bool isprime(int n)
2 {
3     int i;
4     for(i=2;i<=sqrt(n);i++)
5         if(n%i==0)
6             return false;
7     return true;
8 }

 

【欧拉eular筛法】

  时间复杂度:O(n)

  代码:

  

 1 bool number[maxn+5];   //判断是否为素数
 2 int prime[maxn+5];   //储存素数
 3 void isprime()
 4 {
 5     mem(number,true);
 6     int c=0;
 7     for(int i=2;i<=maxn;i++)
 8     {
 9          if(number[i]){
10             prime[++c]=i;
11          }
12          for(int j=0;j<c&&prime[j]*i;j++)
13          {
14              number[prime[j]*i]=false;
15              if(i%prime[j]==0){
16                  break;
17              }
18          }
19     }
20 }

 

posted @ 2020-08-04 22:02  hachuochuo  阅读(147)  评论(0编辑  收藏  举报