首页 > 其他 > 详细

用vector与bitset分别创建1亿以内的素数表,比较快慢

时间:2017-06-11 17:58:12      阅读:318      评论:0      收藏:0      [点我收藏+]

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;
}

 

用vector与bitset分别创建1亿以内的素数表,比较快慢

原文:http://www.cnblogs.com/zacksungy/p/6985619.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!