第k个数

有些数的素因子只有 3,5,7,请设计一个算法找出第 k 个数。注意,不是必须有这些素因子,而是必须不包含其他的素因子。例如,前几个数按顺序应该是 1,3,5,7,9,15,21。

/**
 * 三指针方式
 */
const getKthMagicNumber = (k = 5) => {
    const dp = new Array(k + 1).fill(0);
    dp[1] = 1;
    let p3 = 1,
        p5 = 1,
        p7 = 1;
    for (let i = 2; i <= k; i++) {
        const num3 = dp[p3] * 3,
            num5 = dp[p5] * 5,
            num7 = dp[p7] * 7;
        dp[i] = Math.min(Math.min(num3, num5), num7);
        if (dp[i] === num3) {
            p3++;
        }
        if (dp[i] === num5) {
            p5++;
        }
        if (dp[i] === num7) {
            p7++;
        }
    }
    return dp[k];
};

  

posted @ 2023-02-05 23:24  671_MrSix  阅读(12)  评论(0编辑  收藏  举报