编程珠玑 中的 素数

今天 看了 《编程珠玑》 真是 醍醐灌顶 。。。。。。。。。。。


于是 将其中的 第一节 中的 素数 贴出来 ......................................


其中的 #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;
}

下面是图示


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值