
解答
function isUgly(n) {
if(n <= 0) {
return false;
}
const nums = [2, 3, 5];
for (const num of nums) {
while (n % num === 0) {
n /= num;
}
}
return n == 1;
};

解答
function nthUglyNumber(n) {
let i2 = 0, i3 = 0, i5 = 0;
let dp = [1];
for (let i = 1; i < n; i++) {
let m2 = dp[i2] * 2;
let m3 = dp[i3] * 3;
let m5 = dp[i5] * 5;
let min = Math.min(m2, m3, m5);
if (min === m2) i2++;
if (min === m3) i3++;
if (min === m5) i5++;
dp[i] = min;
}
return dp[n - 1];
};

解答
function nthSuperUglyNumber(n, primes) {
let arr = new Array(primes.length).fill(0);
let dp = [1];
for(let i = 1; i < n; i++) {
let min = Number.MAX_SAFE_INTEGER;
primes.forEach((k, index) => {
min = Math.min(min, dp[arr[index]] * k);
})
primes.forEach((k, index) => {
if(dp[arr[index]] * k === min) {
arr[index]++
}
})
dp[i] = min;
}
return dp[n - 1];
};