今天在百度知道中,遇到了一位朋友求助:利用sql求1到1000的质数和。再说今天周五下午比较悠闲,我就在MSSQL 2008中写了出来,现在分享在博客中,下面直接贴代码:
declare @num int --数值以内的质数和
declare @sum int --质数和
set @num = 1000 --100以内的指数和
set @sum =0 --质数总和
if @num % 2 =0 --如果是偶数转为奇数进行运算 与下面的减2相对称
begin
set @num = @num -1 --如果是偶数就变为奇数
end
while @num >= 3 --2比较特殊 2即是质数又是合数
begin
declare @i int --变量
declare @sqltNum int --对循环的数值开根号得到的数
declare @val int --变量 替换@num
set @i = 2 --设置变量值
set @val = @num --赋值
set @sqltNum =SQRT(@num) --对传入的数字开根
while @i<=@sqltNum
begin
if @num % @i = 0
begin
set @val=0 --如果可以整除 设置@val为0, 与后面 @sum = @sum+@val对应
break
end
else
begin
set @i+=1 --如果整除不了 那就让@i=@i+1,直到 @i>@sqltNum,都没有找出@num % @i = 0的数,那就是质数
continue
end
end
set @sum = @sum+@val
set @num = @num -2 --质数都是奇数
end
select (@sum+2) --2比较特殊 2即是质数又是合数,+2是因为是从3开始计算的
如果谁有更好的方法也麻烦分享下哈,大家相互学习。