主题:求两数的最小公倍数
绿步甲
[专家分:1610] 发布于 2005-08-13 12:25:00
求两数的最小公倍数
function lcm(a,b:integer):integer;
begin
if a< b then swap(a,B);
lcm:=a;
while lcm mod b >0 do inc(lcm,a);
end;
这程序我看不懂,谁帮我来解释一下,万分感谢.
回复列表 (共11个回复)
沙发
FancyMouse [专家分:13680] 发布于 2005-08-13 13:32:00
碾转相除,看看数论吧
板凳
口口and枕头 [专家分:1550] 发布于 2005-08-13 18:47:00
我只有inc这个函数不懂~
3 楼
神童AND天才 [专家分:10] 发布于 2005-08-13 23:22:00
我的程序:
先输入一个数B,表示求B个数的最大公约数和最小公倍数,后输入这B个数,最后可以输出最大公约数和最小公倍数:
var a:array[1..32767]of integer;
a1:array[1..32767]of integer;
b,c,d,e,t,g,h:integer;
begin
readln(b);
d:=0;
for c:=1 to b do readln(a[c]);
a1:=a;
repeat
inc(d);
repeat
t:=a[d];
a[d]:=a[d+1];
a[d]:=a[d] mod t;
a[d+1]:=t;
until a[d]=0;
a[d+1]:=t;
until d=b-1;
write('greatest common divisor:',t,' ');
d:=0;
repeat
inc(d);
g:=a1[d];
h:=a1[d+1];
repeat
t:=a1[d];
a1[d]:=a1[d+1];
a1[d]:=a1[d] mod t;
a1[d+1]:=t;
until a1[d]=0;
a1[d+1]:=g*h div t;
until d=b-1;
write('lease common multiple:',a1[d+1]);
end.
4 楼
lmj9201 [专家分:1400] 发布于 2005-11-13 21:58:00
INC是递增;
如INC(I)=I:=I+1;
5 楼
小虾虾 [专家分:300] 发布于 2005-11-17 12:09:00
1楼的,这是用枚举做的!
6 楼
Benix [专家分:720] 发布于 2005-11-17 19:19:00
相当于
function lcm(a,b:integer):integer;
var i,j:integer;
begin
if a<b then swap(a,b);
for i:=1 to b do
begin
j:=a*i;
if j mod b=0 then break
end;
lcm:=j
end;
7 楼
lala2 [专家分:70] 发布于 2005-11-17 20:59:00
swap是啥?
8 楼
zhaoren [专家分:420] 发布于 2005-11-17 21:12:00
swap()不懂~
9 楼
Sincera [专家分:10] 发布于 2005-11-17 22:02:00
swap交换函数
10 楼
Sincera [专家分:10] 发布于 2005-11-17 22:04:00
inc(i)-----i:=i+1;
dec(i)-----i:=i-1;
inc(i,a)------i:=i+a;(不知对不对)
dec(i,a)------i:=i-a;(同上)
我来回复