| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 830 人关注过本帖
标题:偶尔看到一本比较古老的书,才发现 筛选法 往出筛素数 并不是多么新新的算 ...
取消只看楼主 加入收藏
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
结帖率:99.76%
收藏
已结贴  问题点数:100 回复次数:1 
偶尔看到一本比较古老的书,才发现 筛选法 往出筛素数 并不是多么新新的算法,相反是一个挺古老的算法
大家帮我看看 是不是这样子筛选的  是否有漏洞 或者有待优化的地方

程序代码:
#include <stdio.h>
#define max 300

//使用筛选法列举素数
int main()
{
    int i=2;
    int k,j;
    int t[max]={0};
    for(k=0;k<max;k++) t[k]=i+k;   //为待扫描数据赋初值 自然数序列 从2开始
    i=0;
    k=t[i];  //初始素数
    while(i<max)
    {
        i++;
        for(j=i;j<max;j++) if(t[j]%k==0) t[j]=0;  //凡能够整除者 赋0
        while(t[i]==0) i++;  //搜索下一个素数
        k=t[i];
    }
    for(k=0;k<max;k++)
    {
        if(t[k]!=0) printf("%d ",t[k]);    //不是0者,即素数 打印输出
    }
    printf("\n");
    return 0;
}


DO IT YOURSELF !
2014-04-02 15:13
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用rjsp在2014-4-2 15:33:33的发言:

用一个bit就可以保存一个数字,因此你可以压缩到 1/sizeof(int)*8


都说用bit保存数字  不知道具体咋弄呢  能给一段示例 研究一下!!

DO IT YOURSELF !
2014-04-02 15:39
快速回复:偶尔看到一本比较古老的书,才发现 筛选法 往出筛素数 并不是多么新 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014729 second(s), 8 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved