用vector与bitset分别创建1亿以内的素数表,比较快慢
vector容器:
代码如下:
#include<iostream>
#include<vector>
#include<ctime>
using namespace std;
int main()
{
int num=0;
clock_t t=clock();
vector<int> p(100000001,1); //设置大小为1亿,初始值为1
for(int i=2;i<=10000;i++)
if(p[i])
for(int j=i*i;j<p.size();j+=i) //p.size()为容器大小
p[j]=0;
for(int i=2;i<=100000000;i++)
if(p[i])
num++;
cout<<num<<endl;
cout<<(clock()-t)/CLK_TCK<<endl; //用时为8秒
return 0;
}
bitset容器
代码如下:
#include<iostream>
#include<bitset>
#include<ctime>
using namespace std;
int main()
{
int num=0;
clock_t t=clock();
bitset<100000001>*p= new bitset<100000001>; //大小为1亿
p->set(); //设置每一位都为1
for(int i=2;i<=10000;i++)
if(p->test(i)) //p->test(j)取第i位的元素值
for(int j=i*i;j<p->size();j+=i)
p->reset(j); //把第j位变为0
for(int i=2;i<=100000000;i++)
if(p->test(i))
num++;
cout<<num<<endl;
cout<<(clock()-t)/CLK_TCK<<endl; //用时22秒
delete[] p;
return 0;
}