存储过程求最大公约数、最小公倍数
--输入2个数 求它们的最大公约数和最小公倍数0 D, {; Y, H+ z) i
7 z; X1 W! ^: v/*1.把能够整除某一个数的数,叫做这个数的约数。
' r/ K8 ]% \% s5 B' L( Q4 _几个数所公有的约数叫这几个数的公约数。1 b/ ~; v) `; A) H4 r7 s
公约数中最大的一个叫做这几个数的最大公约数。
j. m: Y) u4 _) [% c1 U: q2.几个数所公有的倍数,叫做这几个数的公倍数。
, q% _: X$ L' i2 z, ^ ?! E2 \公倍数中最小的一个(零除外)叫做这几个数的最小公倍数*/& T8 Q [2 E& r$ x
' \/ l1 M9 I( a3 B2 ]if exists (select * from sys.objects where name='Pro_zdgy')
+ W- u- s8 {4 ~8 w$ Ydrop procedure Pro_zdgy% c! N5 i/ \, D8 b5 Y/ m
go1 j2 b, @ H L; v2 k0 Y1 R1 X6 }
create procedure pro_zdgy(@max int , @min int , @zdgys int output)
5 G' t$ @2 B% ?) d: Das
* [- j3 d2 z+ j$ {* ~6 ibegin# f4 N% K+ ~. F4 }& [+ }8 C
declare @temp int2 u, r- J& p' t, T* ?! E
while(@min!=0)
d( `( v0 A5 vbegin
+ ]2 h- v1 J/ ~. c; V+ V, g% X: H set @temp=@max%@min4 c" a' I1 B7 y7 s$ k
set @max=@min& e2 j1 d3 p: G% i& h
set @min=@temp# Q' ]; l; o' o1 C4 Q! x
end1 J J. h. H! V! s' J( X8 ]2 p* R
set @zdgys=@max6 O: ^1 T7 s0 L) ?. q: r. u
end
8 u4 N: v0 X/ J
* K. I+ R, [( B9 H8 U$ o2 K- Jif exists (select * from sys.objects where name='Pro_gygb')9 E% ? C2 s7 I0 D
drop procedure Pro_gygb
% ~, t& g! W9 M& W* ^) {go
) b; S4 ?* q( t: B9 r" Rcreate procedure pro_gygb(@max int , @min int)
$ h2 X' }# ~4 r7 z+ J, I3 A9 S9 ^as/ E& n. j0 ]) i- e
begin! V' f3 @3 K+ |4 D
declare @zxgb int
9 W, d: h9 F* |" Y( Cdeclare @zdgy int. s7 u x6 b7 E5 f& w5 j
declare @temp int
% ~ ]* G6 t5 u( M/ ~( L! Iif (@max<@min)! q/ E& u9 t, I3 {
begin
9 R% ]6 @) ^ W4 b set @temp=@max
! K2 z" F% i( o9 X set @max=@min
4 D9 W, Y0 U6 ]! i" W set @min=@temp' l" Q7 R6 r R* P/ A: G
end
) T9 I. n+ D1 ^. D. g7 texec Pro_zdgy @max,@min, @zdgy output/ F- ? [8 |# [, n
set @zxgb=@max*@min/@zdgy1 b; f! d5 D8 A0 }
print '最大公约数'+convert(varchar(5),@zdgy)* x1 g4 C" g m; S' K/ W1 c, D
print '最小公倍数'+convert(varchar(5),@zxgb)
0 l. J/ Y' j! {' D6 M( Yend$ M) n/ Q( Y1 ^7 Z+ F& c8 I
go
3 L8 b5 T& M0 q; Lexec Pro_gygb 12,28