RosettaCodeData/Task/Least-common-multiple/8th/least-common-multiple.8th

26 lines
360 B
Plaintext

: gcd \ a b -- gcd
dup 0 n:= if drop ;; then
tuck \ b a b
n:mod \ b a-mod-b
recurse ;
: lcm \ m n
2dup \ m n m n
n:* \ m n m*n
n:abs \ m n abs(m*n)
-rot \ abs(m*n) m n
gcd \ abs(m*n) gcd(m.n)
n:/mod \ abs / gcd
nip \ abs div gcd
;
: demo \ n m --
2dup "LCM of " . . " and " . . " = " . lcm . ;
12 18 demo cr
-6 14 demo cr
35 0 demo cr
bye