pascal求公倍数

来源:百度知道 编辑:UC知道 时间:2024/05/21 05:12:39
描述
求两个数的最小公倍数。

输入格式
输入包含多组测试数据,以EOF结束,每组数据有两个正整数a,b在一行中,由一个空格分割。(0< a,b <=2^31-1)

输出格式
输出两个数的最小公倍数(保证结果在0~2^31-1)

样例输入
2 3
12 8

样例输出
6
24
用pascal做!快!我很急,快!!!!!!

楼上的如果用 longint 的话,a,b大一些是会超范围的......
不知道能不能用int64,不管了......
先求最大公约数,在求最小公倍数。
program prob;
var
a,b,c:int64;
function gcd(a,b:int64):int64;{用欧几里得公式求最大公约数}
begin
if a mod b=0 then exit(b);
exit(gcd(b,a mod b));
end;

BEGIN
while not eof do
begin
readln(a,b);
c:=a*b div gcd(a,b);
writeln(c);
end;
END.
直接这么写了,应该没编译错误吧,反正大概意思就是这样了

var a,a1,b,b1,s:longint;
begin
while not eof do
begin
readln(a,b);
a1:=a;b1:=b;
while a<>b do if a>b then a:=a-b else b:=b-a;
s:=a1*b1 div a;
writeln(s);
end;
end.
(够快吧?)