标题:素数“漏筛法”
只看楼主
激情依旧
Rank: 1
等 级:新手上路
威 望:2
帖 子:524
专家分:0
注 册:2005-4-4
 问题点数:0 回复次数:11 
素数“漏筛法”
#include<stdio.h>
#define max 22500
main()
{ unsigned int i,range ,factor ,k;
  int a[max];
  printf("please input the range:\n");/*指出多大范围内寻找素数*/
  scanf("%d",&range);
  for(i=2;i<=range;i++)        /*初始化*/
     a[i]=1;
   factor=2;                     
   while(factor<=range)
   { if(a[factor]==1)                                                
       {
         printf("%d\t",factor);
   k=factor;
   while(k<=range)
   {
    a[k]=-1;        
       k=k+factor;
   }
       }
     factor++;
   }
}
坚强依然!永不言苦!永不言败!睇透数据结构!编程编程再编程!-----激情依旧


[此贴子已经被作者于2005-5-11 9:27:26编辑过]


搜索更多相关主题的帖子: 筛法 素数 factor range 
2005-04-10 13:48
simpley
Rank: 1
等 级:新手上路
帖 子:262
专家分:0
注 册:2005-2-23
得分:0 
if(a[factor]<=range)                                                
       {
         printf("%d\t",factor);
这一句看不懂,而且我把if(a[factor]<=range)    改为if(a[factor]>0)  
程序也对.
if(a[factor]<=range) 我实在不知道为什么,谁能解释一下.

myQQ::445750010
2005-04-10 16:57
simpley
Rank: 1
等 级:新手上路
帖 子:262
专家分:0
注 册:2005-2-23
得分:0 
我又试了一下,发现把if(a[factor]<=range)中的range改为任何一个大于等于1的常数,程序都正确,这到底是怎么回事?

myQQ::445750010
2005-04-10 17:47
simpley
Rank: 1
等 级:新手上路
帖 子:262
专家分:0
注 册:2005-2-23
得分:0 
明白了.
这种程序的可读性太差了

myQQ::445750010
2005-04-10 17:59
角度
Rank: 1
等 级:新手上路
帖 子:94
专家分:0
注 册:2005-3-16
得分:0 
不是太明白
楼上邻居你能把这段程序给解释一下吗?
谢谢!

角度!
2005-04-11 10:07
激情依旧
Rank: 1
等 级:新手上路
威 望:2
帖 子:524
专家分:0
注 册:2005-4-4
得分:0 
我也没办法。他算法是那样设计的。.....

生是编程人!!!!死是编程鬼!!!!颠峰人生!!!焚尽编程!!! 爱已严重死机!情必须重新启动!情人已和服务器断开连接!网恋也需要重新拨号!-----激情依旧
2005-04-11 23:52
时空之蕊
Rank: 2
等 级:新手上路
威 望:3
帖 子:691
专家分:0
注 册:2004-10-31
得分:0 
呵呵!我来了!这个很容易理解的啊
看到没有非素数都被置为-1呢!
unsigned int -1 就是最大的signed int 数所以条件a[factor]<=range不成立
显然range改成其他的整数也不一定会错!不过如果改为65536 因为最大的singed int 为65535
相信会让楼上各位都大吃一惊!!

我渴望掌控时空的核心——用最先进的技术,打造无比美丽的世界!
2005-04-12 00:31
激情依旧
Rank: 1
等 级:新手上路
威 望:2
帖 子:524
专家分:0
注 册:2005-4-4
得分:0 
楼住就是强~~~~~~~~~~小弟服了

生是编程人!!!!死是编程鬼!!!!颠峰人生!!!焚尽编程!!! 爱已严重死机!情必须重新启动!情人已和服务器断开连接!网恋也需要重新拨号!-----激情依旧
2005-04-12 08:22
激情依旧
Rank: 1
等 级:新手上路
威 望:2
帖 子:524
专家分:0
注 册:2005-4-4
得分:0 
是了。我是在程序员考试复习书上看到的。他挖了5个空格让我填。我只填对2个空。。。。。。。。开始我也看不懂他说什么。后面看到答案才大吃一惊。它那样做也可以。。。。。。。以后要多看做标记的程序才行

生是编程人!!!!死是编程鬼!!!!颠峰人生!!!焚尽编程!!! 爱已严重死机!情必须重新启动!情人已和服务器断开连接!网恋也需要重新拨号!-----激情依旧
2005-04-12 08:23
时空之蕊
Rank: 2
等 级:新手上路
威 望:3
帖 子:691
专家分:0
注 册:2004-10-31
得分:0 
这里的论坛是不是有问题了我回帖的日期怎么为2004年,bug建议静夜思看看

我渴望掌控时空的核心——用最先进的技术,打造无比美丽的世界!
2005-04-12 21:40



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-15262-1-1.html




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

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.230994 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved