免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1599 | 回复: 1
打印 上一主题 下一主题

[算法] 求助:算法——埃拉托尼筛网法选质数 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-06-08 13:18 |只看该作者 |倒序浏览
最近小弟在学习《PROGRAMMING IN C》,第7章时遇到了这个算法:
埃拉托尼筛网法的步骤:
(1)        定义整数数组P,将所有的数组元素设置为0。
(2)        设置变量i 等于2。
(3)        如果i 〉n ,算法结束。
(4)        如果 Pi等于0, 那么i是一个质数。
(5)        对于所有的正整数j , 如果 i * j <= n ,将数组元素Pi*j设置为1。
(6)        将i 的值增加1,回到第三步。

对这个算法不是很理解,希望有前辈能给我详细解释一下这个算法的原理。

这个书后给出的实现方法:
#include <stdio.h>

void main ()
{
  int p[151], i, j;
  int n = 150;

  for ( i = 2; i <= n; i++ )
    p[i] = 0;

  i = 2;

  while (i <= n)
  {
    if (p[i] == 0)
      printf ("%i  ", i);

    j = 1;

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

      ++i;
  }
}

多谢了,小弟只是个初学者,如果问的问题太弱智,请见晾。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
2 [报告]
发表于 2007-06-08 14:16 |只看该作者
原帖由 niexinnm 于 2007-6-8 13:18 发表
最近小弟在学习《PROGRAMMING IN C》,第7章时遇到了这个算法:
埃拉托尼筛网法的步骤:
(1)        定义整数数组P,将所有的数组元素设置为0。
(2)        设置变量i 等于2。
(3)        如果i 〉n ,算法结束。
(4)        如果 ...

这个算法的介绍网上有很多,搜索一下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP