今天 看了 《编程珠玑》 真是 醍醐灌顶 。。。。。。。。。。。
于是 将其中的 第一节 中的 素数 贴出来 ......................................
其中的 #include "boost/timer.hpp" 是boost 库中的一个组件 用来记时间的
个人 觉得 这个 速度 很快 1000万 才 不到 5 秒
#include <stdio.h>
#include <stdlib.h>
#include <boost/timer.hpp>
//#include <iostream>
//using namespace std;
using namespace boost;
bool IsPrime(int x);
//int Bound(int x);
bool IsPrime(int x)
{
int i;
if(x%2==0) return (x==2);
if(x%3==0) return (x==3);
if(x%5==0) return (x==5);
if(x%7==0) return (x==7);
if(x%11==0) return(x==11);
if(x%13==0) return (x==13);
if(x%17==0) return (x==17);
for(i=19;i*i<=x;i=i+2)
{
if((x/i)*i==x)
return 0;
}
return 1;
}
/*
int Bound(int x)
{
return (int)sqrt((double)x);
}
*/
int main(int argc, char *argv[])
{
int k,n=1;
double time;
boost::timer t;
for (k=3;k<=10000000;k=k+2)
{
if(IsPrime(k))
{
++n; // printf("%5d ",k);
// ingore 2
}
}
time=t.elapsed();
printf("%8f \n%4d \n ",time,n);
system("PAUSE");
return 0;
}
下面是图示