筛法求素数
插一个好的微博:https://blog.csdn.net/whereisherofrom/article/details/78922648
思想:从2开始找起,2的倍数,即不是素数,以此类推。
1 #include<cstdio> 2 #include<cstring> 3 #include<set> 4 using namespace std; 5 const int maxm=10006; 6 set<int> prime; 7 bool num[maxm]; 8 void pri() 9 { 10 prime.clear(); 11 memset( num, false, sizeof num); 12 num[0]=num[1]=1; 13 for(int i=2;i<maxm;i++){ 14 if(!num[i]){ 15 prime.insert(i); 16 for(int j=i*2;j<maxm;j+=i){ 17 num[j]=1; 18 } 19 } 20 } 21 } 22 23 int main() 24 { 25 int N; 26 pri(); 27 return 0; 28 }
运用stl的set存放后可以快速查出该数是否为素数。