在SQLSERVER2005中实现素数计算

server|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

   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)

时间: 2024-07-30 14:48:36

在SQLSERVER2005中实现素数计算的相关文章

在SQL SERVER 2005中实现素数计算

我将提出一个挑战,谁能用SQLSEERVER提出计算素数最好的方法,我用了一个新的特点CTE和某些TSQL实现,但均不理想,前者(CTE)有限制,而后者(TSQL)产生一百万个素数用了7分种你可以干的更好么?这儿是我的一些代码段落 (TSQL实现) set nocount ondeclare @prime table (prime int not null primary key)--insert into @prime values (2)--insert into @prime values

WPS文字中使用表格计算功能进行公式运算

WPS文字是我们常用的办公软件之一,因其简单.实用,所以深受广大用户的喜爱.当我们编辑文档过程中,有时需要在文档中插入表格,对某些数据进行比对或辅助说明,此时就需要对的表格中某些数据结果进行统计了.对于表格内数据的计算,大家平时都习惯于用Excel来操作,从而忽略了WPS文字中的表格计算功能,其实WPS文字中的表格计算功能同样强大,不但能进行快速操作,还能进行复杂的公式运算.你若不信那就请跟我来-- 一.表格数据快速计算 当我们在WPS中插入表格后,有时需要对表格中的数据进行统计.汇总,以便对文

如何将SQLServer2005中的数据同步到Oracle中

有时由于项目开发的需要,必须将SQLServer2005中的某些表同步到Oracle数据库中,由其他其他系统 来读取这些数据.不同数据库类型之间的数据同步我们可以使用链接服务器和SQLAgent来实现.假设我们 这边(SQLServer2005)有一个合同管理系统,其中有表contract 和contract_project是需要同步到一个 MIS系统中的(Oracle9i)那么,我们可以按照以下几步实现数据库的同步. 1.在Oracle中建立对应的contract和 contract_proj

WPS文字中的表格计算功能

一些网友已经拿到新引擎的wps文字测试版了,并惊喜地发现文字中的表格已经可以进行简单的计算.   或者,看了常用工作条上的简单的表格计算按钮后,你会觉得表格计算功能还嫌太弱,只能计算求和.求平均值.最大值和最小值.其实,WPS文字已经为更复杂的计算做好了充分的准备,只是在界面中还没有展示出来.如下表,就是用新版WPS文字制作出来的,当基本数据变化后,全选表格,并按下快捷键F9,则可以快速更新计算结果. 下面我们对表格中的公式一一进行介绍:   1.求积:在常用工具条中的"快速计算"按钮

Word文档中对表格中数据进行计算的方法

  Word文档中对表格中数据进行计算的方法          1.在表格的最后一个单元格中单击放置插入点光标,然后在"表格工具-布局"选项卡中单击"数据"组中的"公式"按钮,如图1所示. 图1 单击"公式"按钮 2.打开"公式"对话框,在"编号格式"下拉列表中选择公式结果的显示格式,在"粘贴函数"下拉列表中选择需要使用的函数,如图2所示.此时公式将被粘贴到"

WPS2016文字中如何直接计算算式

在工作或学习中,常会在WPS文字中插入表格来增强说服力.我们知道在WORD中插入表格后并不能像在表格那样进行简单的计算,而WPS文字中插入的表格却可以进行简单的公式运算. 1.求积:在常用工具条中的"快速计算"按钮中并没有求积运算,但我们可以手工输入公式.在上表中,把光标定位在张三的加班费所在单元格,按Ctrl+F9插入域,在大括号中输入"=E2*F2"然后再按一下F9,即显示出"100".另,如果是多个单元格连乘,也可以用求积函数(PRODUC

WPS文字中的表格计算功能使用教程

  一些网友已经拿到新引擎的wps文字测试版了,并惊喜地发现文字中的表格已经可以进行简单的计算. 或者,看了常用工作条上的简单的表格计算按钮后,你会觉得表格计算功能还嫌太弱,只能计算求和.求平均值.最大值和最小值.其实,WPS文字已经为更复杂的计算做好了充分的准备,只是在界面中还没有展示出来.如下表,就是用新版WPS文字制作出来的,当基本数据变化后,全选表格,并按下快捷键F9,则可以快速更新计算结果. 下面我们对表格中的公式一一进行介绍: 1.求积:在常用工具条中的"快速计算"按钮中并

WPS文字中的表格计算功能的初次使用

  一些网友已经拿到新引擎的WPS文字测试版了,并惊喜地发现文字中的表格已经可以进行简单的计算. 或者,看了常用工作条上的简单的表格计算按钮后,你会觉得表格计算功能还嫌太弱,只能计算求和.求平均值.最大值和最小值.其实,WPS文字已经为更复杂的计算做好了充分的准备,只是在界面中还没有展示出来.如下表,就是用新版WPS文字制作出来的,当基本数据变化后,全选表格,并按下快捷键F9,则可以快速更新计算结果. 下面我们对表格中的公式一一进行介绍: 1.求积:在常用工具条中的"快速计算"按钮中并

bash shell中的数学计算

简介 在写shell脚本的时候会用到很多的数学运算,简单的一个游标+1 -1, 或者更多一点的浮点运算等,shell中数学计算稍麻烦,我想每个人都试过var=1+1 或者var=$xxx+1这类错误. 下面对shell中做数学计算小做总结 示例   使用expr整数运算 > var=1 > var=`expr $var + 1` > echo $var 2 其他的减乘除类似, 要注意乘法中的*号需要做转义\*即可 使用bash内建命令let > var=2 > let &qu