资讯   |   开发   |   选机中心   |   产品大全 | IBM | 惠普 | 联想 | 戴尔 | 苹果 | 神舟
更多: | 华硕 | 明基 | 方正 | 紫光 | TCL | 夏新 | 联宝 | 宏碁 | 七喜 | 长城 | 清华同方 | 海尔 | 三星 | 东芝 | 索尼 | 富士通 | LG | 技术 | ddnoon
当前位置:笔记本 > 编程开发 >
Advertisement
文章正文

在SQLSERVER2005中实现素数计算 _编程

类型:转载   责任编辑:asp.net   日期:2007/05/23


热门软件下载:


   
  • VS.NET 2005 Beta 2初体验 
  • 比较Eclipse,试用Vs.net 2005(Whidbey) 预览版的感受 
  • VS.net 2005 试用(1) 
  • Microsoft Visual Studio 2005 Team System Web 测试简介 
  • 使用 Visual Studio 2005 Team System 进行单元测试并生成用于 Unit Test Framework 的源代码 
  • Visual Studio 2005 Team System:设计分布式系统以进行部署 
  • Visual Studio 2005 Team System: Microsoft Solutions Framework 
  • Visual Studio 2005 Team System:软件项目管理 
  • Visual Studio Team System单服务器部署指南 
  • ASP 编程中 20 个非常有用的例子 
  • 页面导航:

    正文内容:

    我将提出一个挑战,谁能用sqlseerver提出计算素数最好的方法,
    我用了一个新的特点cte和某些tsql实现,但均不理想,前者(cte)有限制,而后者(tsql)产生一百万个素数用了7分种
    你可以干的更好么?
    这儿是我的一些代码段落

    (tsql实现)
    set nocount on
    declare @prime table (prime int not null primary key)
    --insert into @prime values (2)
    --insert into @prime values (3)
    --insert into @prime values (5)
    --insert into @prime values (7)
    --insert into @prime values (11)
    declare @number int, @pc int
    set @number = 13
    set @pc = 1
    while @pc < 1000000
    begin

      if not exists (select 1 from @prime where @number % prime = 0 and prime < sqrt(@number) )
      begin
      insert into @prime select @number
      set @pc = @pc +1
      end
      set @number = @number
       + case when @number %2 = 1 then 2
       when @number %3 = 2 then 2
       when @number %5 = 4 then 2
       when @number %7 = 6 then 2
       when @number %11 = 10 then 2
       else 1 end
      end
    select @pc


    (cte实现)

    with seq
    as( select 13 number
    union all
    select s.number
    + case when s.number %2 = 1 then 2
    when s.number %3 = 2 then 2
    when s.number %5 = 4 then 2
    when s.number %7 = 6 then 2
    when s.number %11 = 10 then 2
    else 1 end
    from seq s
    where number < 32767
    )
    , prime as (
    select s.number
    from seq s
    where not exists ( select 1 from seq s2 where s2.number < s.number and (s.number) % s2.number = 0)
    )
    select *
    from prime
    option (maxrecursion 32767


     

     
    热门推荐笔记本: 宏碁笔记本
    相关文章:
    webmaster:popbb@126.com   最佳浏览:1024X768 MSIE
    ©2007 popbb.net All Rights Reserved