感觉之前东西不够多,重新写了一下,把计时器函数用进去,可以返回数个计时单元(若除以每秒计时单元个数那差别基本没有,均为0)
一般求法(用了const引用和内联函数)
#include<iostream>
using namespace std;
const int N=10000000;
bool pos[N];
inline bool isprime(const int &n)
{
if(n<=1)
return false;
for (int i=2; i*i<=n; i++)
{
if(n%i==0)
return false;
}
return true;
}
int main(void)
{
time_t s=clock(),e;
for (int i=2; i<=N; i++)
{
pos[i]=isprime(i);
}
e=clock();
cout<<(e-s)<<endl;
return 0;
}
用时7366ms
筛选法求素数
#include<iostream>
using namespace std;
const int N=10000000;
bool pos[N];
int main(void)
{
pos[1]=true;
time_t s=clock(),e;
for (int i=2; i<=N; i++)
{
for (int j=2; j*i<=N; j++)
{
pos[i*j]=true;
}
}
e=clock();
cout<<e-s<<endl;
return 0;
}
//用时1515ms
除了系统内存以及其他的差别,可以看出筛选法的速度比一般素数判断快了好几倍。用于打表的话是个非常不错的选择