当前位置: 面试刷题>> 分解质因数 (经典算法题500道)
### 题目描述补充
**题目:分解质因数**
给定一个正整数n(n > 1),要求编写一个函数来分解这个数的所有质因数,并以列表(或数组)的形式返回这些质因数。质因数分解是将一个正整数表示为若干个质数的乘积的过程,这些质数按从小到大的顺序排列,且每个质数出现的次数尽可能多。
**示例**:
- 输入:`n = 36`
- 输出:`[2, 2, 3, 3]`
- 解释:36 = 2^2 * 3^2
**要求**:
- 编写的函数应该能够处理任意大于1的正整数。
- 返回的质因数列表中的质数应该按从小到大的顺序排列。
- 每个质数出现的次数应与其在n的质因数分解中的次数一致。
### 示例代码
#### PHP 示例
```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 示例
```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 示例
```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]
```
**码小课网站中有更多相关内容分享给大家学习**,涵盖了算法设计、数据结构、编程语言进阶等多个方面,是提升编程能力的不错选择。