模板的参数N、M分别是筛选的区间和该区间的素数个数。 Enjoy it! template<int N,int M> class Prime{ private: bool isprime[N]; unsigned int nthprime[M]; public: unsigned int operator[](int n){return nthprime[n];} bool operator()(int n){return isprime[n];} Prime(){ int i=2,k=0; isprime[0]=isprime[1]=1;nthprime[0]=2; while(i<=N){ for(int j=2;i*j<=N;j++) isprime[i*j]=1; while(isprime[++i]); nthprime[++k]=i; } nthprime[0]=2; } };