Chinaunix首页 | 论坛 | 博客
  • 博客访问: 46482
  • 博文数量: 11
  • 博客积分: 383
  • 博客等级: 一等列兵
  • 技术积分: 133
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-17 19:54
文章分类

全部博文(11)

文章存档

2012年(3)

2011年(8)

我的朋友

分类: C/C++

2011-10-05 15:00:06

筛法求素数是比较常用的求一段范围内素数的算法,其实也就是自己生成一段范围内的素数,即把这段范围内的所有的非素数
去除。其实代码还是比较简单的,思路也是比较简单的。
  1. #define MAX 10000
  2. int gen_prime(int prime[], int flag[], int len)
  3. {
  4.     int i,j;
  5.     memset(flag, 1, len);
  6.     for(i=2; i<=len/2; i++)
  7.     {
  8.         if(flag[i])
  9.         {
  10.             for(j=i<<1; j<=len; j++)
  11.             {
  12.                 flag[j] = 0;
  13.             }
  14.         }
  15.     }
  16.  
  17.     j = 0;
  18.     for(i=2; i<=len; i++)
  19.     {
  20.         prime[j++] = i;
  21.     }

  22.     return j;
  23. }
flag数组是一个判断数组,而最终规定范围内的所有素数存放在prime数组。上述函数的返回值为prime数组的有效值的
数据的个数。
阅读(915) | 评论(0) | 转发(0) |
0

上一篇:二分法总结

下一篇:简单实用的VIM配置

给主人留下些什么吧!~~