题解 | #质数因子#
质数因子
https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
const rl = require("readline").createInterface({ input: process.stdin }); const iter = rl[Symbol.asyncIterator](); void async function () { let x1 = ''; x1 = (await iter.next()).value ?? ''; rl.close(); x1 = parseInt(x1) let zss = [] let xp2 = Math.sqrt(x1) for (let i = 2; i <= xp2; i++) { let noz = x1 % i === 0 if (noz) { x1 = x1 / i zss.push(i) i-- } } if (x1 !== 1) zss.push(x1) if (zss.length > 0) console.log(zss.toString().replace(/,/g, ' ')); else console.log(x1); }()
- 质因数(素因数或质因子)在数论里是指能整除给定正整数的质数。
- 质因子的计算可以使用试除法来判断
- 试除到数的平方根就可以
- 【易错】一个数的平方根有可能也是质数,比如25,这一点很容易被忽略
- 【易错】试错的过程中若采用的是for循环递增式试除,很容易漏掉被除掉后的结果,被除掉后的结果也可能是质数
- 【易错】将数组转化为字符串时,replace方法记得最好使用正则表达式的g标签,以全局替换
- 【易错】如果数字本身就是质数,那么不要忘记它自身就是他的质因子,不要忘记输出