MojoでProject Euler 69

https://projecteuler.net/problem=69

 n = 2 \cdot 3 \cdot 5 \cdot \cdots
とすると、
 \displaystyle \frac{n}{\phi(n)} = \frac{2}{2-1}\frac{3}{3-1}\frac{5}{5-1}\cdots
となって、これが一番大きいので、要はN以上になるまで素数を小さい順に掛けていくだけです。

import sys

fn is_prime(n: Int) -> Bool:
    var p = 2
    while True:
        if p * p > n:
            return True
        elif n % p == 0:
            return False
        p += 1

fn f(N: Int) -> Int:
    var num = 1
    var p = 2
    while True:
        if is_prime(p):
            if num * p > N:
                break
            num *= p
        p += 1
    return num

fn main() raises:
    var args = sys.argv()
    var N = atol(args[1])
    print(f(N))