求两个数的最小公倍数 ( 积分: 50 )

  • 主题发起人 主题发起人 zhang214
  • 开始时间 开始时间
Z

zhang214

Unregistered / Unconfirmed
GUEST, unregistred user!
求两个数的最小公倍数 。。谢谢,delphi代码
 
求两个数的最小公倍数 。。谢谢,delphi代码
 
function go(a,b:integer):integer
var i,x:integer;
begin
if b>a then
begin//这里让a存放最大的数
i:=a;
a:=b;
b:=i;
end;
for i:=2 to a*b do
begin
x:=a*i;
if (x mod b)=0 then
begin
result :=x;
break;
end;
end;
end;

上面的代码应该没有问题,你试试吧
 
修改了下,下面的ok
function go(a, b: integer): integer;
var
i, x: integer;
begin
if b > a then
begin //这里让a存放最大的数
i := a;
a := b;
b := i;
end;
for i := 1 to a * b do
begin
x := a * i;
if (x mod b) = 0 then
begin
result := x;
break;
end;
end;
end;
 
可以按 最小公倍数 = a * b / 最大公约数 的公式,先求出公质数。

function MaxMerse(A, B: integer): integer;
begin
if B = 0 then
Result := A
else
if A > B then
Result := MaxMerse(B, A mod B)
else
Result := MaxMerse(A, B mod A);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
a, b: integer;
begin
a := StrToInt(Edit1.Text);
b := StrToInt(Edit2.Text);
if (a <=0) or (b <= 0) then
Button1.Caption := 'Input Error'
else
Button1.Caption := inttostr(a div MaxMerse(a, b) * b);
end;
 
谢谢2位了!
 
多人接受答案了。
 
后退
顶部