#include <assert.h>
#include <stdbool.h>

/*
如果 `n` 为丑数则按数学定义可表示为 `n = 2^a * 3^b * 5^c` 的形式，
只需反复除以 2、3、5 即可。当 `a = b = c = 0` 时 `a = 1`。
 */
bool isUgly(int n)
{
    if (n <= 0)
        return false;

    int num[] = {2, 3, 5};

    for (int i = 0; i < 3; i++)
    {
        while (n % num[i] == 0)
            n /= num[i];
    }

    return n == 1;
}

int main()
{
    assert(isUgly(6) == 1);
    assert(isUgly(1) == 1);
    assert(isUgly(14) == 0);
    assert(isUgly(8) == 1);
    return 0;
}
