Least common multiple: Difference between revisions

→‎{{header|Standard ML}}: add another SML version
(Added Euler)
(→‎{{header|Standard ML}}: add another SML version)
 
(8 intermediate revisions by 7 users not shown)
Line 847:
p lcm(12, 18) # 36
p lcm(14, 21) # 42
</syntaxhighlight>
 
=={{header|Bruijn}}==
{{trans|Haskell}}
<syntaxhighlight lang="bruijn">
:import std/Math .
 
lcm [[=?1 1 (=?0 0 |(1 / (gcd 1 0) ⋅ 0))]]
 
:test ((lcm (+12) (+18)) =? (+36)) ([[1]])
:test ((lcm (+42) (+25)) =? (+1050)) ([[1]])
</syntaxhighlight>
 
Line 1,162 ⟶ 1,173:
{{out}}
<pre>36</pre>
 
=={{header|EasyLang}}==
<syntaxhighlight>
func gcd a b .
while b <> 0
h = b
b = a mod b
a = h
.
return a
.
func lcm a b .
return a / gcd a b * b
.
print lcm 12 18
</syntaxhighlight>
{{out}}
<pre>
36
</pre>
 
=={{header|EchoLisp}}==
Line 1,176 ⟶ 1,207:
=={{header|Elena}}==
{{trans|C#}}
ELENA 46.x :
<syntaxhighlight lang="elena">import extensions;
import system'math;
gcd = (m,n => (n == 0) ? (m.Absolute) : (gcd(n,n.mod:(m))));
lcm = (m,n => (m * n).Absolute / gcd(m,n));
Line 1,268 ⟶ 1,299:
 
=={{header|Euler}}==
Note % is integer division in Euler, not the mod operator.
 
'''begin'''
'''new''' gcd; '''new''' lcm;
Line 1,700 ⟶ 1,733:
 
=={{header|K}}==
===K3===
{{works with|Kona}}
<syntaxhighlight lang="k"> gcd:{:[~x;y;_f[y;x!y]]}
lcm:{_abs _ x*y%gcd[x;y]}
Line 1,705 ⟶ 1,740:
lcm .'(12 18; -6 14; 35 0)
36 42 0
lcm/1+!20
232792560</syntaxhighlight>
===K6===
{{works with|ngn/k}}
<syntaxhighlight lang="k"> abs:|/-:\
gcd:{$[~x;y;o[x!y;x]]}
lcm:{abs[`i$x*y%gcd[x;y]]}
 
lcm .'(12 18; -6 14; 35 0)
36 42 0
lcm/1+!20
232792560</syntaxhighlight>
Line 2,813 ⟶ 2,857:
 
=={{header|RPL}}==
'''For unsigned integers'''
≪ DUP2 < ≪ SWAP ≫ '''IFT'''
'''WHILE''' DUP B→R '''REPEAT''' SWAP OVER / LAST ROT * - '''END''' DROP
'''WHILE''' DUP B→R ''GCD'REPEAT''' STO
'''WHILE''' DUP B→R '''REPEAT''' SWAP OVER / LAST ROT * - '''END''' DROP
≫ '<span style="color:blue">GCD</span>' STO
≪ DUP2 * ROT ROT /<span '''style="color:blue">GCD'''</span> /
≫ ''''<span style="color:blue">LCM'''</span>' STO
#12d #18d '''<span style="color:blue">LCM'''</span>
{{out}}
<pre>
1: #36d
</pre>
'''For usual integers''' (floating point without decimal part)
≪ '''WHILE''' DUP '''REPEAT'''
SWAP OVER MOD '''END''' DROP ABS
≫ '<span style="color:blue">GCD</span>' STO
≪ DUP2 * ROT ROT <span style="color:blue">GCD</span> /
≫ '<span style="color:blue">LCM</span>' STO
 
=={{header|Ruby}}==
Line 3,024 ⟶ 3,077:
 
=={{header|Standard ML}}==
===Readable version===
<syntaxhighlight lang="sml">fun gcd (0,n) = n
| gcd (m,n) = gcd(n mod m, m)
 
fun lcm (m,n) = abs(x * y) div gcd (m, n)</syntaxhighlight>
 
===Alternate version===
<syntaxhighlight lang="sml">val rec gcd = fn (x, 0) => abs x | p as (_, y) => gcd (y, Int.rem p)
 
Line 3,300 ⟶ 3,360:
 
=={{header|Wren}}==
<syntaxhighlight lang="ecmascriptwren">var gcd = Fn.new { |x, y|
while (y != 0) {
var t = y
23

edits