回 帖 发 新 帖 刷新版面

主题:求两数的最小公倍数

求两数的最小公倍数
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个回复)

沙发

碾转相除,看看数论吧

板凳

我只有inc这个函数不懂~

3 楼

我的程序:
先输入一个数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 楼

INC是递增;
如INC(I)=I:=I+1;

5 楼

1楼的,这是用枚举做的!

6 楼

相当于
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 楼

swap是啥?

8 楼

swap()不懂~

9 楼

swap交换函数

10 楼

inc(i)-----i:=i+1;
dec(i)-----i:=i-1;
inc(i,a)------i:=i+a;(不知对不对)
dec(i,a)------i:=i-a;(同上)

我来回复

您尚未登录,请登录后再回复。点此登录或注册