/*求兩個數的最大公約數*/
create function GetGys(@num1 int,@num2 int)
returns int --返回值
as
begin
declare @times int --計數器
declare @min int --存儲兩個數的較小者
declare @result int --保存結果
if(@num1>=@num2)
set @min=@num2
else
set @min=@num1
set @times=@min
while(@times<=@min) --循環
begin
if(@num1%@times=0 and @num2%@times=0)
begin
set @result=@times
break
end
set @times=@times-1
end
return @result
end
/*求兩個數的最小公倍數*/
create function GetGbs(@num1 int,@num2 int)
returns int
as
begin
declare @result int --結果
declare @max int --保存兩個數的大者
declare @times int
if @num1<=@num2
set @max=@num2
else
set @max=@num1
set @times=@max
while(@times>=@max)
begin
if(@times%@num1=0 and @times%@num2=0)
begin
set @result=@times
break
end
set @times=@times+1
end
return @result
end
最後測試:
運行
select dbo.GetGys(15,20) as 最大公約數,dbo.GetGbs(15,20) as 最小公倍數
顯示結果:
最大公約數 最小公倍數
5 60