位集(bitset)計(jì)算是用空間換時(shí)間,這里的例子是書上的,計(jì)算1億內(nèi)的所有素?cái)?shù)個(gè)數(shù):
#include<iostream>
#include<bitset>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
/*位集 計(jì)算1億內(nèi)的所有素?cá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":" ");
這一行去除,輸出太耗時(shí),呵呵。