天之道

享受编程的乐趣。
posts - 118, comments - 7, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

埃拉托色尼筛选法

Posted on 2012-08-13 22:17 hoshelly 阅读(566) 评论(0)  编辑 收藏 引用 所属分类: DS && Algorithm
// From < C Programming FAQs > 
找出所有小于10000的素数,算法原理请自行google 埃拉托色尼筛法

程序代码:

#define N 10000
#include<stdio.h>
int main()
{
    int i,j,a[N];
    for(i=2;i<N;i++) a[i]=1; //将数组中的值全部设为1
    for(i=2;i<N;i++)
        if(a[i])
            for(j=i;i*j<N;j++)   a[i*j]=0; //将索引为2,3,5,的倍数的数组元素设为0,因为这些数不是素数
    for(i=2;i<N;i++)
        if(a[i]) printf("4%d\n",i); //遍历打印出找到的素数
    printf("\n");
    return 0;
}

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理