题解 | #质数因子#
质数因子
https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
const rl = require("readline").createInterface({ input: process.stdin }); var iter = rl[Symbol.asyncIterator](); const readline = async () => (await iter.next()).value; void async function () { // Write your code here while(line = await readline()){ let tokens = parseInt(line.split(' ')); //定义一个判断质数的方法 function isPrime(num){ let isp = true; let sqrt = Math.sqrt(num);//sqrt() 方法可返回一个数的平方根。 if(num == 1) isp =false for(let i = 2; i <= sqrt; i++){ // isp=(num%i===0?false:true); if(num%i===0){ isp=false; break; } } return isp; } //做除法 let getarr=[]; for(let i = 2; i < tokens; i++){ if(isPrime(i)){ while(tokens%i===0){ getarr.push(i); tokens=tokens/i; } if(isPrime(tokens)){ getarr.push(tokens); break; } } } console.log(getarr.join(' ')); } }()
我的方法
函数封装
while中的tokens改变后仍然符合while的判断条件时可以循环
根据质数只的定义,在判断一个数n是否是质数时,我们只要用1至n-1去除n,看看能否整除即可。但我们有更好的办法。先找一个数m,使m的平方大于n,再用<=m的质数去除n (n即为被除数)如果都不能整除,则n必然是质数。
练练练练练 文章被收录于专栏
练练练练练