当前位置:首页 >> 技术文章 >> 服务器技术 >> 用ASP(vbscript)实现埃拉托斯芬筛法求质数的完整算法

用ASP(vbscript)实现埃拉托斯芬筛法求质数的完整算法

发布时间:2010年5月27日 文章分类:服务器技术 文章作者:Hitomi 浏览次数:
本文出现技术词汇:
ASP HTML XML W3C

  质数是自然数的一部分,有趣的是,它却与自然数的个数一样多,也有无穷多个。2000多年前,古希腊数学家就从理论上证明了这一点。

  不过,质数看上去要比自然数少得多。有人统计过:在1到1000之间,有168个质数;在1000到2000之间,有135个质数;在2000到3000之间,有127个质数,而在3000到4000之间,就只有120个质数了。越往后,质数就越稀少。那么怎样从自然数里把质数给找出来呢?

  公元前3世纪,古希腊数学家埃拉托斯芬发明了一种很有趣的方法。他首先把很多自然数按顺序列成一张数表,然后接照一定的规则,逐个把不是质数的数都划掉,最后就得到了全部的质数。具体规则是这样的:首先把1划掉,因为1既不是质数也不是合数。接下来的一个数是2,它是最小的质数,应予保留,但2的倍数一定不是质数,应该全都划掉。也就是从2起,每隔1个数就划掉1个数。在剩下的数中,3是第一个未被划掉的数,它是质数,应予保留,但3的倍数一定不是质数,应该全都划掉。也就是从3起,每隔2个数划掉1个数。4已被划掉了,在剩下的数中,5成了第一个未被划掉的数,它是质数,也应予以保留,但5的倍数一定不是质数,应该全都划掉。……这样继续划下去,数表上最后剩下的就全都是质数。

  当时,埃拉托斯芬常把数表写在涂了白蜡的木板上,遇到需要划去的数,就在那个数的位置上刺1个孔。随着合数逐一被划掉。木板上变得千疮百孔,像是一个神奇的筛子,筛掉了合数,留下了质数。所以,人们将这种求质数的方法叫做埃拉托斯芬筛法。这种方法是世界上最古老的一种求质数的方法。它的原理挺简单,运用起来也很方便。现在,凭借经过改进后的埃拉托斯芬筛法,数学家们已经把10记以内的质数全都筛出来了。

以上是埃拉托斯芬筛法的故事及具体方法,下面研究怎么用ASP实现吧。。。。

下面是我用ASP实现的1-900的质数

http://www.sseoo.com/mygame/prime/

有兴趣的朋友可以在后边加上参数可以看到更多质数,不要太大哟

比如:http://www.sseoo.com/mygame/prime/?max=1200

源代码下载:http://www.sseoo.com/mygame/prime/prime.rar

XML/HTML代码
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  
  5. <title>用ASP(vbscript)实现埃拉托斯芬筛法求质数</title>  
  6. <style type="text/css">  
  7. #wrap{width:900px;margin:0 auto;border-top:1px solid #CCC;border-left:1px solid #CCC;}   
  8. #wrap div{float:left;display:block;width:29px;height:29px;line-height:29px;text-align:center;border-right:1px solid #CCC;border-bottom:1px solid #CCC;font-weight:normal;font-size:10px;font-family:Geneva, Arial, Helvetica, sans-serif;color:#666;}   
  9. #wrap div.not{background:#EEE;color:#DDD;}   
  10. </style>  
  11. </head>  
  12. <body>  
  13. <div id="wrap">  
  14. <%   
  15. max = request.querystring("max")   
  16. if max = "" then max = 900  
  17. for i = 1 to max   
  18.     if i = 1 then   
  19.         response.write("    <div class=""not"">"&i&"</div>"&vbCrLf)   
  20.         response.flush()   
  21.     else   
  22.         temp = 0  
  23.         for j = 2 to i - 1   
  24.             if i / j = int(i / j) then   
  25.                 temptemp = temp + 1   
  26.             else   
  27.                 temptemp = temp   
  28.             end if   
  29.         next   
  30.         if temp > 0 then   
  31.             response.write("    <div class=""not"">"&i&"</div>"&vbCrLf)   
  32.             response.flush()   
  33.         else   
  34.             response.write("    <div>"&i&"</div>"&vbCrLf)   
  35.             response.flush()   
  36.         end if   
  37.     end if   
  38. next   
  39. %>  
  40. </div>  
  41. </body>  
  42. </html>  

 

我要评论

关于我们

SSEOO网络工作室是哈尔滨网站制作的个人团队,主要开展哈尔滨网站制作哈尔滨网站建设哈尔滨网站开发等业务,技术一流费用低,企业建站首选的开发团队!

我们来自哈尔滨各网络公司的IT精英,专注于简洁、实用、美观、大方的企业网站,当然我们也可以做更多其他类型的网站,只要你有明确的需求,就没有我们做不出的网站!

由于工作繁忙,暂停网站制作业务!

联系方式

数据统计

  • 技术文章:30
  • 教程连载:19
  • 技术词汇:27
  • 实用网站:14
  • 网站案例:24
  • 常用软件:5
  • 网友回复:7