源代码
<body>
<script>
// 定义一个数组,用来存放因数
var factorList = [];
// 定义数组里面数的位置的起始值0
var a = 0;
// 定义分解质因数的函数
function decomposition(num) {
var i = 2;
// 如果被分解的数为1、2、3,则直接存入数组,并返回结果
if ((num == 1) || (num == 2) || (num == 3)) {
factorList[a++] = num;
return factorList;
}
// 如果被分解的数不是1、2、3,则需要先存下它最小的因数,然后除以它的最小的因数之后再次进行分解
// num/2 是因为 如果在num的一半大小之前如果没有找到因数,那么之后也不会有,因此不需要后面的部分也进入循环,提升效率
for (; i <= num / 2; i++) {
if (num % i == 0) {
// 存下一个因数(后面跳出循环保证存入的是最小的)
factorList[a++] = i;
// 除以因数后,继续进行分解操作
decomposition(num / i);
// 跳出循环,确保存入数组的是最小的因数
break;
}
}
// 存放最后一个质因数
if (i > num / 2) {
factorList[a++] = num;
}
return factorList;
}
// 提示输入一个需要分解质因数的数
var input = Number(prompt("请输入一个数:"));
// 传入分解质因数的函数中,调用
decomposition(input);
// 定义输出的结果
result = input + "="
// 循环将数组中的值,即各质因数放入结果中
for (var x = 0; x < factorList.length; x++) {
result += factorList[x];
// 最后一个质因数放入结果后,不需要*号
if (x != factorList.length - 1) {
result += "*";
}
}
// 页面中写出结果
document.write("<h1>" + result + "</h1>");
</script>
</body>
输入数据
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/85c511b00a6c8992be1a5fe9f1fe7bd0.png)
运行结果
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/dd4a11e58dcb5622d0a469522b6b72e9.png)