筛法求素数 函数模板
1 const int MAX=20000000; 2 //an存储素数数组,下标从0开始,个数为num 3 int an[2000000],num; 4 bool bn[MAX+10]; 5 6 void prime() 7 { 8 num = 0; 9 memset(bn,1,sizeof(bn)); 10 bn[0] = bn[1] = 0; 11 for(int i = 2;i<MAX;i++) 12 { 13 if(bn[i]) an[num++] = i; 14 for(int j = 0;j<num&&an[j]*i<MAX;j++) 15 { 16 bn[an[j]*i] = 0; 17 if(i%an[j] == 0) break; 18 } 19 } 20 }