将 20 分解质因数:20=225,那 5 就是 20 的最大质因子。

下面我们写代码来求一个数的最大指引子吧:

function maxPrimeFactor(n) {
    var pf = 1; // 最大质因数

    for (var i = 2; n > 1; ++i) {
        // 如果 n 能被 i 整除
        // 说明此时最大的质因数是 i
        if (n % i == 0) {
            n /= i;
            pf = i;

            // 循环用 n 除以 i,直到不能除尽为止
            // 保证了 i 是一个质数
            while (n % i == 0) {
                n /= i;
            }
        }
    }

    return pf;
}