lcmを繰り返し適用するだけの問題です。lcmがgcmを使います。gcmはふつうに再帰で定義します。
function fold($f, $init) { begin { $x = $init } process { $x = & $f $x $_ } end { $x } } function gcd($m, $n) { if($n -eq 0) { $m } else { gcd $n ($m % $n) } } function lcm($m, $n) { $m / (gcd $m $n) * $n } 1..20 | fold { lcm $args[0] $args[1] } 1