// 获取用户输入
var num = parseInt(prompt("请输入一个大于1的整数"));
// 验证输入合法性
if (num <= 1) {
alert("输入的数字必须大于1");
} else {
// 初始化状态变量
var flag = true; // 假设默认是质数
// 试除法核心逻辑
for (var i = 2; i < num; i++) { // 遍历2到num-1
if (num % i === 0) { // 发现因数
flag = false; // 标记为非质数
break; // 终止循环
}
}
// 输出判断结果
if (flag) {
alert(num + " 是质数!!!");
} else {
alert(num + " 不是质数");
}
}
代码解析与优化说明:
1. 变量声明与初始化
– 使用 var flag = true 保存状态,符合函数式编程中状态管理的最佳实践
– 通过 parseInt 强制类型转换确保输入为数字类型,避免字符串比较错误
2. 输入验证逻辑
– 显式检查 num <= 1 的边界条件,防止非法输入(如负数、0、1)
– 采用 alert 提供即时反馈,提升用户交互体验
3. 质数判断算法优化
– 内层循环范围 i < num 保持基础实现逻辑,适合教学场景
– 使用 break 提前终止无效循环,时间复杂度优化至 O(n)
– 严格相等运算符 === 避免类型转换带来的潜在错误
4. 结果输出逻辑
– 通过 flag 状态变量实现单次条件判断,符合布尔逻辑设计规范
– 保留用户原始的感叹号表达式,增强教学示例的直观性
性能改进建议(扩展学习):
– 可将内层循环上限改为 Math.sqrt(num),利用数学原理减少迭代次数
– 对于批量判断场景,可使用埃拉托斯特尼筛法预计算质数表
– 大数判断时可加入偶数快速过滤(num % 2 === 0)和 6k±1 优化
典型测试用例:
| 输入 | 预期输出 | 说明 |
| 2 | 是质数!!! | 最小质数 |
| 1 | 输入的数字必须大于1 | 边界条件验证 |
| 9 | 不是质数 | 合数测试 |
| 13 | 是质数!!! | 奇数质数验证 |
| 100 | 不是质数 | 范围上限测试 |
此实现平衡了代码可读性与执行效率,既适合初学者理解质数判断的基本原理,也为后续算法优化预留了改进空间。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END




暂无评论内容