我有一个片段,可以打印数字数组中可以完全分割的最小数字。
numbers = [1, 2, 3, 4, 5, 6]
divisible = (large, small) -> large % small is 0
for i in [1..100]
div = (divisible i, num for num in numbers)
if (div.reduce (x, y) -> x and y)
console.log i
break
我是coffeescript的新手,我想知道是否有更简洁/更清洁的实现。
答案 0 :(得分:1)
我会写这样的东西但它是关于使用Array.filter而不是Array.reduce,而不是关于使用coffeescript技巧来缩小原始代码。
fn = (numbers) ->
for i in [1..1000]
return i if (numbers.filter (el) -> i % el == 0).length is numbers.length
console.log fn([1, 2, 3, 4, 5, 6])
答案 1 :(得分:1)
假设数字中没有0。
gcd = ( a, b )->
unless b then a else gcd b, a % b
lcm = ( a, b )->
a * ( b / gcd a, b )
numbers = [ 2, 3, 4, 5, 6, 13, 98751 ]
console.log numbers.reduce lcm