【原始】
时间复杂度: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 }