create function isPrime(@number int)
returns @prime table (id int identity(1,1),prime int) 
as
begin
declare @n int
select @n=2

while @n<=sqrt(@number)
begin
  if @number%@n<>0         
          set @n=@n+1
end
if @n>sqrt(@number)
insert @prime select @number
        else
begin
  if @number%2 =0
insert @prime select 2
          set @n=3
  while @n<@number
  begin
if @number%@n=0
begin
                insert @prime select @n
                  if @@identity=2
break
                end
   set @n=@n+2
          end
end
  return
end
goselect * from dbo.isPrime(11)
/*
id prime
1      11
*/select * from dbo.isPrime(33)
/*
id prime
1      3
2     11
*/

解决方案 »

  1.   

    改一下,還有點問題create function isPrime(@number int)
    returns @prime table (id int identity(1,1),prime int) 
    as
    begin
      declare @n int
      select @n=2  while @n<=sqrt(@number)
      begin
        if @number%@n<>0
              set @n=@n+1
        else
      break
      end  if @n>sqrt(@number)
    insert @prime select @number
      else
      begin
    select @n=2
    if @number%2 =0
    insert @prime select 2
    set @n=3
    while @n<@number
    begin
    if @number%@n=0
    begin
      insert @prime select @n
      if @@identity=2
    break
    end
    set @n=@n+2
    end
      end
      return
    end
    go