注册 登录
编程论坛 SQL Server论坛

求2---100之间的素数

漯河 发布于 2007-12-01 10:47, 1656 次点击
求2---100之间的素数
7 回复
#2
purana2007-12-01 11:13
写个函数就好了.
#3
purana2007-12-01 11:17
create function f_getnum(@num int)
    returns bit     --return 0表示素数,1表示非素数
as
begin
    declare @k int,@i int
    declare @swit bit
    select @k=sqrt(@num),@i=2,@swit=0
    while @i<=@k and @swit=0
    begin
        if @num%@i=0
            set @swit=1
        else
            set @i=@i+1
    end
    return @swit
end
go
create proc p_test
as
    declare @t table(col int)
    declare @i int
    set @i=3
    while @i<=100
    begin
        if dbo.f_getnum(@i)=0
             insert @t values(@i)
        set @i=@i+1
    end
    select * from @t
go

exec p_test

drop function f_getnum
drop proc p_test

/*
col         
-----------
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97

(所影响的行数为 24 行)
*/
#4
madpbpl2007-12-01 14:13
没想明白其中的算法,麻烦purana说一下你的算法。
#5
purana2007-12-01 15:00
求素数的算法.不用说了吧?.
#6
madpbpl2007-12-01 15:20
有点明白了,一个数除以2到它的平方根(大于等于2),如果余数为0,则这个数为合数,如果不为0,则这个数为素数。
#7
漯河2007-12-02 13:04
2也是素数
#8
漯河2007-12-02 13:05
declare @m int,@n int
set @m =2
while (@m<100)
 begin
  set @n =2
    while(@n<@m)
     begin
       if(@m%@n=0)
       begin
      set @n=@m
      end
        set @n=@n+1
      end
       if (@n=@m) print @m
     set @m=@m+1
end
1