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

46 lines
809 B
AppleScript
Raw Permalink Normal View History

2017-09-23 10:01:46 +02:00
-- LEAST COMMON MULTIPLE -----------------------------------------------------
2016-12-05 22:15:40 +01:00
-- 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
2017-09-23 10:01:46 +02:00
-- TEST ----------------------------------------------------------------------
2016-12-05 22:15:40 +01:00
on run
lcm(12, 18)
--> 36
end run
2017-09-23 10:01:46 +02:00
-- GENERIC FUNCTIONS ---------------------------------------------------------
2016-12-05 22:15:40 +01:00
-- 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)
2017-09-23 10:01:46 +02:00
script
on |λ|(a, b)
2016-12-05 22:15:40 +01:00
if b = 0 then
a
else
2017-09-23 10:01:46 +02:00
|λ|(b, a mod b)
2016-12-05 22:15:40 +01:00
end if
2017-09-23 10:01:46 +02:00
end |λ|
2016-12-05 22:15:40 +01:00
end script
2017-09-23 10:01:46 +02:00
result's |λ|(abs(x), abs(y))
2016-12-05 22:15:40 +01:00
end gcd