RosettaCodeData/Task/Least-common-multiple/AppleScript/least-common-multiple-1.app...

45 lines
612 B
AppleScript

-- lcm :: Integral a => a -> a -> a
on lcm(x, y)
if x = 0 or y = 0 then
0
else
abs(x div (gcd(x, y)) * y)
end if
end lcm
-- TEST
on run
lcm(12, 18)
--> 36
end run
-- GENERAL FUNCTIONS
-- abs :: Num a => a -> a
on abs(x)
if x < 0 then
-x
else
x
end if
end abs
-- gcd :: Integral a => a -> a -> a
on gcd(x, y)
script _gcd
on lambda(a, b)
if b = 0 then
a
else
lambda(b, a mod b)
end if
end lambda
end script
_gcd's lambda(abs(x), abs(y))
end gcd