MojoでProject Euler 33

https://projecteuler.net/problem=33

しらみつぶしするだけですね。

#################### library ####################

fn gcd(n: Int, m: Int) -> Int:
    if m == 0:
        return n
    else:
        return gcd(m, n % m)


#################### process ####################

fn f() -> Int:
    var num = 1
    var den = 1
    # ab/bc = a/c
    for a in range(1, 10):
        for b in range(1, 10):
            var ab = a * 10 + b
            for c in range(1, 10):
                var bc = b * 10 + c
                if ab * c == bc * a:
                    num *= a
                    den *= c
                    var d = gcd(num, den)
                    num //= d
                    den //= d
    
    return den

fn main() raises:
    print(f())