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