JuliaでProject Euler(3)

Problem 3

https://projecteuler.net/problem=3

Juliaで次のように書く。

function e003(n)
    local p = 2
    while p*p <= n
        if n%p == 0
            while true
                n = div(n, p)
                if n%p != 0
                    break
                end
            end
            if n == 1
                return p
            else
                return e003(n)
            end
        end
        p += 1
    end
    return n
end

N = parse(Int, ARGS[1])
println(e003(N))

Juliaでは、Int同士の割り算を普通にするとFloat64になってしまう。

julia> 4/2
2.0

商を整数にするには、div関数を使う。

julia> div(4, 2)
2

divmodに相当する関数は無いようだ。