当前位置: 面试刷题>> 分解质因数 (经典算法题500道)


题目描述补充

题目:分解质因数

给定一个正整数n(n > 1),要求编写一个函数来分解这个数的所有质因数,并以列表(或数组)的形式返回这些质因数。质因数分解是将一个正整数表示为若干个质数的乘积的过程,这些质数按从小到大的顺序排列,且每个质数出现的次数尽可能多。

示例

  • 输入:n = 36
  • 输出:[2, 2, 3, 3]
  • 解释:36 = 2^2 * 3^2

要求

  • 编写的函数应该能够处理任意大于1的正整数。
  • 返回的质因数列表中的质数应该按从小到大的顺序排列。
  • 每个质数出现的次数应与其在n的质因数分解中的次数一致。

示例代码

PHP 示例

function primeFactors($n) {
    $factors = [];
    for ($i = 2; $i * $i <= $n; $i++) {
        while ($n % $i == 0) {
            $factors[] = $i;
            $n = $n / $i;
        }
    }
    if ($n > 1) {
        $factors[] = $n;
    }
    return $factors;
}

// 测试
echo implode(', ', primeFactors(36)); // 输出: 2, 2, 3, 3

Python 示例

def prime_factors(n):
    factors = []
    i = 2
    while i * i <= n:
        if n % i:
            i += 1
        else:
            n //= i
            factors.append(i)
    if n > 1:
        factors.append(n)
    return factors

# 测试
print(prime_factors(36))  # 输出: [2, 2, 3, 3]

JavaScript 示例

function primeFactors(n) {
    let factors = [];
    for (let i = 2; i * i <= n; i++) {
        while (n % i === 0) {
            factors.push(i);
            n = n / i;
        }
    }
    if (n > 1) {
        factors.push(n);
    }
    return factors;
}

// 测试
console.log(primeFactors(36)); // 输出: [2, 2, 3, 3]

码小课网站中有更多相关内容分享给大家学习,涵盖了算法设计、数据结构、编程语言进阶等多个方面,是提升编程能力的不错选择。

推荐面试题