如何编写程序遍历1-50数字,同时输出奇偶性与素数标识?
解决方案
我们需要调整代码逻辑,让每个数字都输出奇偶性,同时对素数额外标注。核心思路是为每个数字生成对应的描述字符串:先确定奇偶属性,再判断是否为素数并追加标识,最后统一输出。
修改后的完整代码
function isPrime(n) { if (n === 1) return false; // 优化素数判断:循环到平方根即可,减少不必要的计算 for (let i = 2; i <= Math.sqrt(n); i++) { if (n % i === 0) return false; } return true; } const maxNum = 50; for (let i = 1; i <= maxNum; i++) { let description = `${i} `; // 判断奇偶性 const isEven = i % 2 === 0; description += isEven ? "偶数" : "奇数"; // 若为素数,替换为包含素数标识的完整描述 if (isPrime(i)) { description = `${i} 素数且${isEven ? "偶数" : "奇数"}`; } console.log(description); }
代码说明
- 素数判断优化:原函数循环到
n-1,修改为循环到Math.sqrt(n)——因为如果n存在大于平方根的因数,必然对应一个小于平方根的因数,这样能大幅减少循环次数,提升效率。 - 描述生成逻辑:
- 先初始化描述,带上当前数字;
- 判断奇偶性,追加“奇数”或“偶数”;
- 如果当前数字是素数,直接替换为包含“素数且X数”的完整描述,避免重复输出属性。
- 特殊值适配:1会被正确识别为“奇数”,2会输出“2 素数且偶数”,完全匹配你给出的示例要求。
部分输出示例
1 奇数 2 素数且偶数 3 素数且奇数 4 偶数 5 素数且奇数 ... 50 偶数
内容的提问来源于stack exchange,提问作者f2lpOliveira
相关产品推荐
相关产品推荐

