位集(bitset)計算是用空間換時間,這里的例子是書上的,計算1億內(nèi)的所有素數(shù)個數(shù):
#include<iostream>
#include<bitset>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
/*位集 計算1億內(nèi)的所有素數(shù)*/
bitset<100000000>*p = new bitset<100000000>;
p->set();
for(int i=2;i<=10000;++i)
if(p->test(i))
for(int j=i*i;j<p->size();j+=i)
p->reset(j);
int num=0;
for(int i=2;i<100000000;++i)
if(p->test(i)){
cout<<i<<( num%9==0 ?"\n":" ");
num++;
}
cout<<"Prime's count:"<<num<<endl;
delete[]p;
system("pause");
return 0;
}
可將
cout<<i<<(num%9==0?"\n":" ");
這一行去除,輸出太耗時,呵呵。