题解 | #质数因子#
质数因子
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必然是质数。
练练练练练 文章被收录于专栏
练练练练练
