MS SQL计算最大公约数和最小公倍数函数

/*求两个数的最大公约数*/
CREATE  FUNCTION f_GetGys
    (
      @num1 BIGINT ,
      @num2 BIGINT
    )
RETURNS BIGINT
AS
    BEGIN
        DECLARE @m BIGINT;
        DECLARE @i BIGINT;
        IF ( @num1 < @num2 )--确保@num1永远是大的 @num2永远是小的
            BEGIN 
                SET @m = @num2; 
                SET @num2 = @num1;
                SET @num1 = @m; 
            END; 
        SET @i = @num1 % @num2;
        WHILE @i > 0
            BEGIN 
                SELECT  @num1 = @num2 ,
                        @num2 = @i ,
                        @i = @num1 % @num2;
            END; 
        RETURN @num2;
    END;
GO
/*求两个数的最小公倍数(调用了最大公约数函数,也可以直接写进去)*/
CREATE  FUNCTION f_GetGbs
    (
      @num1 BIGINT ,
      @num2 BIGINT
    )
RETURNS BIGINT
AS
    BEGIN 
        DECLARE @a BIGINT;
        DECLARE @b BIGINT;
        DECLARE @c BIGINT;
        DECLARE @d BIGINT;  
        SET @a = @num1; 
        SET @b = @num2;
        SET @c = dbo.f_GetGys(@num1, @num2);
        SET @d = @a * @b / @c;
        RETURN @d;
    END;
GO


摘自:http://bbs.csdn.net/topics/380047119


  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值