| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 688 人关注过本帖
标题:[求助]埃拉托色尼筛网法求质数问题[已解决]
只看楼主 加入收藏
喝茶的小k
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-7-27
收藏
 问题点数:0 回复次数:6 
[求助]埃拉托色尼筛网法求质数问题[已解决]

埃拉托色尼筛网法
描述如下:
 (1)定义整数数组P,将所有色数组元素设置为0
 (2)设置变量i=2;
 (3)如果i>n算法结束
 (4)如果P[i]等于0;那么i是一个质数
 (5)对于所有正整数j,如果i*j<=n,将数组元素P[i*j]设置为1
 (6)将i的值增加1,回到(3)
这是我写的用这个算法求10以内的质数,为什么他的输出就只有2?
请大家帮个忙看下
#include<stdio.h>

void main()
{
int i,j,n,P[10];
n=10;
for(i=0;i<n;++i)
P[i]=0;
for(i=2;i<n;++i)
{
if(P[i]==0)
printf("%i ",i);
for(j=1;i*j<=n;j++)
P[i*j]=1;
}
}










[此贴子已经被作者于2006-8-15 1:21:28编辑过]

搜索更多相关主题的帖子: 质数 埃拉托色尼 筛网 整数 变量 
2006-08-11 17:07
swabian
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2006-8-10
收藏
得分:0 
for(j=1;i*j<=n;j++)
P[i*j]=1;
错了。
根据题意,是
int t;

....

for(j=1;j<n;j++)
{
t=i*j;
if (t<=n)
p[i*j]=1;
}

似乎是这样,你那几句话我没看明白...

如太阳般夺目... 燃烧的自由 自由的燃烧
2006-08-11 18:03
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
可是我编译运行你的程序可以得到正确的结果,2 3 5 7.

倚天照海花无数,流水高山心自知。
2006-08-11 18:21
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
for(i=2;i<n;++i)
{
if(P[i]==0)
printf("%d ",i);
for(j=1;i*j<=n;j++)
P[i*j]=1;
}

倚天照海花无数,流水高山心自知。
2006-08-11 18:26
喝茶的小k
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-7-27
收藏
得分:0 

不行啊,我用的是vc++6.0.运行的时得到的结果总是只有一个2

只是什么原因啊?


2006-08-11 19:15
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
多了个=号!
for(j=1;i*j<=n;j++)
会运行到i=2,j为5的情况,此时i*j=10,P[10]非法,

对不礼貌的女生收钱......
2006-08-11 19:29
喝茶的小k
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-7-27
收藏
得分:0 
以下是引用soft_wind在2006-8-11 19:29:04的发言:
多了个=号!
for(j=1;i*j<=n;j++)
会运行到i=2,j为5的情况,此时i*j=10,P[10]非法, //把数组P下标的大小设置为比n大1

嗯,我看到了,谢谢,按我写的那个程序,如果求11以内的质数,结果就错了

应该在定义数组P的时候把他的下标设置比n大1(求的n为以内的质数)问题就解决了


2006-08-11 20:45
快速回复:[求助]埃拉托色尼筛网法求质数问题[已解决]
数据加载中...
 
   



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

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