javascript - (Javascript)给定间隔中的素数:for循环不迭代
问题描述
在下面的代码中是一个素数测试函数(如果素数则返回真,否则返回假)。我用它来打印 5 到 20 之间的素数。
预期输出明显是5,7,11,13,17,19
for 循环似乎没有迭代,只是停留在 5。输出就好像脚本卡在无限 while 循环中一样。
我不知道我做错了什么,也许 if 语句没有正确编写?对 javascript 还是有点陌生。
function is_prime(number){
if (number==2 || number==3){
return true;
}
if (number==0 || number==1 || number%2==0){
return false;
}
if ((number+1)%6!=0 && (number-1)%6!=0){
return false;
}
for(i=3; i-1<=parseInt(number)**.5; i+=2){
if (number%i==0){
return false;
}
}
return true;
}
for(i=5;i<=20;i++){
if(is_prime(i)){
console.log(i)
}
}
解决方案
您已经i
在for()
循环中创建了一个名为的全局变量 - 然后您在函数中更改了相同的变量。
let i
在这两种情况下使用。
推荐阅读
- java - OffsetDateTime 到 ZonedDateTime - 具有特定的 ZoneId
- powershell - Powershell 将数据从 Oracle 适配器传输到批量复制适配器
- python - 按特定字符拆分一列中的值
- java - 如何在 Java 应用程序 (JSP) 中集成 node.js 应用程序 (bpmn-js)
- html - 如何在 CSS 中指定文本装饰下划线的宽度
- javascript - 如何在具有相同值的每个单选按钮上执行相同的代码
- c - DOS环境下如何读取串口数据
- ionic-framework - 无法创建 ionic 3 项目而不是 4
- css - 如何检查父母是否在场?
- javascript - 如何知道哪个用户在线?