1.进制转换 www.nowcoder.com/practice/8f…
var line
while(line=readline()){
console.log(parseInt(line,16))
}
2.质数因子 www.nowcoder.com/practice/19…
解法1:
var line,arr=[]
while(line=readline()){
line = parseInt(line)
for(let i = 2;i<=Math.sqrt(line);){
if(line%i==0){
line/=i
arr.push(i)
}else{
i++
}
}
arr.push(line)
console.log(arr.join(' '))
}
解法2:
var line,arr=[]
while(line=readline()){
line = parseInt(line)
for(let i = 2;i<=line/2;){
if(line%i==0){
line/=i
arr.push(i)
}else{
i++
}
}
arr.push(line)
console.log(arr.join(' '))
}
这个题的难点在于时间复杂度。解法1优于解法2.
下面是我最刚开始的解法(卡在了运行时间上)
var line,arr=[]
while(line=readline()){
line = parseInt(line)
let i =2
while(i<=line){
if(line%i==0){
line=line/i
arr.push(i)
}else{
i++
}
}
arr.sort((a,b)=>a-b)
console.log(arr.join(' '))
}
这个解法是卡在了这个例子上:
运行时间超出预期时间了。
通过测算的解法1和解法2是对循环的条件进行了优化。记住以下一个结论:
该正整数的所有质因数都一定会小于平方根。