<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>求一个质数的因子/因数</title>
</head>
<body>
</body>
<script type="text/javascript">
function primefactory(val){
if(isNaN(Number(val))){
console.log("请输入整数");
return val;
}
let nval = Number(val);
let i=2;
// 先加1再平方根 和 平方根后再加1 防止遗留银子
let j=Math.round(Math.sqrt(val+1))+1;
let farr = [];
for(;i<j;i++){
if(nval%i == 0){
nval = nval/i;
if(j == 1){
break;
}else{
farr.push(i)
// 此处赋值为1 返回到循环时++后变为2
i = 1;
}
}
}
// 如果没有因数
if(farr.length == 0){
farr.push(nval)
}
console.log(farr);
return farr;
}
</script>
</html>
以上方式有点别扭,使用新的方法
function getfactor(val){
if(isNaN(Number(val))){
console.log("请输入整数");
return val;
}
let nval = Number(val);
let i=2;
let farr = [1];
while(i<=nval){
if(nval%i == 0){
farr.push(i);
nval = nval/i;
i=2;
continue;
}
i += 1;
}
console.log(farr);
return farr;
}