26 lines
360 B
Plaintext
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
|