在SQLSERVER2005中实现素数计算

2016-01-29 16:25 18 1 收藏

在SQLSERVER2005中实现素数计算,在SQLSERVER2005中实现素数计算

【 tulaoshi.com - SQLServer 】

 

我将提出一个挑战,谁能用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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/sqlserver/)

   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实现)

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/sqlserver/)

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)

 

来源:http://www.tulaoshi.com/n/20160129/1498554.html

延伸阅读
启用 SQL Server Browser 服务 在 Windows 防火墙中创建例外 在 Windows 防火墙中为 SQL Server 2005 创建例外 在 Windows 防火墙中为 SQL Server Browser 服务创建例外 简介 在尝试从远程计算机连接到 Microsoft SQL Server 2005 实例时,可能会接收到错误消息。在使用任何程序连接到 SQL Server 时都可能会发生此问题。例如,在使用 S...
1.创建xml字段 在表xmlTest内创建一个字段,命名_x,设置数据类型为xml。 2.写入xml insert into xmlTest (_x) values(' root item attr1="a1" attr2="a2"item11/item item attr1="a1" attr2="a2"item12/item /root ') go 如此再插入一条记录: insert into xmlTest (_x) values(' root item attr1="b1" attr2="b2"item21/item item attr1="b1" ...
有时由于项目开发的需要,必须将SQLServer2005中的某些表同步到Oracle数据库中,由其他其他系统来读取这些数据。不同数据库类型之间的数据同步我们可以使用链接服务器和SQLAgent来实现。假设我们这边(SQLServer2005)有一个合同管理系统,其中有表contract 和contract_project是需要同步到一个MIS系统中的(Oracle9i)那么,我们可以按照...
标签: SQLServer
装完sql server 2005后却没有找到ms的示例数据库northwind   后来查看安装光盘发现sql server 2005种只有adventurework与adventureworkDW这两个sample database   到ms官方站找了好久  才找到sql server 2000的sample database   下载链接如下 http://www.microsoft.com/downloads/details.aspx?FamilyID=06616212-0356-46A...
关于 xml ,难以理解的不是 SQLServer 提供的函数,而是对 xml 本身的理解,看似很简单的文件格式,处理起来却是非常困难的。本文只是初探一下而已。 详见 SQLServer 联机帮助: 主题 说明 query() 方法( xml 数据类型) 此方法用于对 XML 实例进行查询。 value() 方法( xml 数据类型) 此方法用于从 XML 实例检索 SQL 类型的值。 exi...

经验教程

686

收藏

20
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部