fn mobius(n: u32) -> i32 {
    var value: u32 = n
    var primes: u32 = 0
    var p: u32 = 2
    while p * p <= value {
        if value % p == 0 {
            value = value / p
            primes = primes + 1
            if value % p == 0 {
                return 0
            }
        }
        p = p + 1
    }
    if value > 1 {
        primes = primes + 1
    }
    if primes % 2 == 0 {
        return 1
    }
    return -1
}

pub fn main(world: World) -> Void raises {
    if mobius(30) == -1 {
        check world.out.write("mobius ok\n")
    }
}
