JuliaでProject Euler(5)

Problem 5

https://projecteuler.net/problem=5

Pythonで次のように書く。

from fractions import gcd
import sys

def lcm(n, m):
    return n/gcd(n, m)*m

def e005(n):
    return reduce(lcm, range(1, n+1), 1)

N = int(sys.argv[1])
print e005(N)

これをそのままJuliaに翻訳する。

function lcm(n, m)
    return div(n, gcd(n, m))*m
end

function e005(n)
    return reduce(lcm, 1:n, init=1)
end

N = parse(Int, ARGS[1])

println(e005(N))

Juliaにもgcdがある。しかも、モジュールなどの指定がなくても使える。名前が衝突、などと考えない。
reduceも使える。しかし、初期値の指定はデフォルトでは無く、上のように必ずinitという名前付きで指定しなければならない。初期値無しは、reduceの邪道の使い方だと思って、あってもなくても同じときでも必ず初期値を指定していた人間からすると、かなり注意が必要だ。