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

埃拉托色尼筛网法
描述如下:
 (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
喝茶的小k
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-7-27
收藏
得分:0 

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

只是什么原因啊?


2006-08-11 19:15
喝茶的小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.022809 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved