📅  最后修改于: 2023-12-03 14:56:45.938000             🧑  作者: Mango
在计算机科学中,素数分解是指将一个正整数分解成若干个质数的乘积的过程。在本文中,我们将讨论如何使用 JavaScript 对整数进行素数分解。
素数分解算法的核心思想是将待分解的正整数 n 逐个除以小于等于 √n 的质数,如果 n 能够被除尽,则将该质数记录下来,继续对 n 进行除以这个质数后的商,直到 n 不再能被除尽为止。
例如,将 42 分解成质数的乘积的过程如下:
基于上述算法思路,我们可以使用以下 JavaScript 代码对任意正整数进行素数分解:
function primeFactors(n) {
const factors = [];
let divisor = 2;
while (n >= 2) {
if (n % divisor === 0) {
factors.push(divisor);
n = n / divisor;
} else {
divisor++;
}
}
return factors;
}
这段代码定义了一个名为 primeFactors
的函数,接受一个正整数参数 n
,返回一个包含 n 的质因数的数组 factors
。
首先,定义了一个空数组 factors
和初始除数 divisor
,默认为 2。
然后,当 n 大于等于 2 时,对 n 进行如下操作:
最后,返回质因数数组 factors
。
为了验证 primeFactors
函数的正确性,我们可以编写如下测试函数:
function testPrimeFactors() {
const testCases = [
{ input: 2, expected: [2] },
{ input: 3, expected: [3] },
{ input: 4, expected: [2, 2] },
{ input: 42, expected: [2, 3, 7] },
{ input: 123456, expected: [2, 2, 2, 2, 3, 643] },
];
testCases.forEach(({ input, expected }) => {
const result = primeFactors(input);
console.log(`Input: ${input}`);
console.log(`Expected: ${expected}`);
console.log(`Result: ${result}`);
console.log(result.toString() === expected.toString() ? 'Pass' : 'Fail');
console.log('---');
});
}
testPrimeFactors();
此函数会遍历一个包含多组测试用例的数组,分别调用 primeFactors
函数并比较其返回值与预期结果是否相等。如果相等,输出 'Pass',否则输出 'Fail' 并给出详细的测试结果。