首页 > 解决方案 > 循环内的 JS 循环

问题描述

我的任务是编写一个 js 代码,只使用从用户那里接收数字并打印出 1 和该数字之间的所有素数的循环。

这就是我所做的,但它没有像我期望的那样工作,找不到我缺少的东西:

var num = parseInt(prompt('Please enter a number'));
var flag = 0;

for (var i=2 ; i<=num ; i++){
    for (var j=2 ; j<num ; j++){
        if (num%j==0){
            flag = 1;
            break;
        }       
    }
    if (flag==0) console.log(i);
    if (flag==1) flag=0;
}

标签: javascriptprimes

解决方案


当您在嵌套的 for 循环中时,您正在确定 ifi是质数,而不是num. 所以你想在i那里使用变量,如下所示:

var num = parseInt(prompt('Please enter a number'));
var flag = 0;

for (var i=2 ; i<=num ; i++){
    for (var j=2 ; j<i ; j++){
        if (i%j==0){
            flag = 1;
            break;
        }       
    }
    if (flag==0) console.log(i);
    if (flag==1) flag=0;
}

我已经留下了你的其余代码,所以你尽可能地了解发生了什么。


如果你喜欢短代码,这里有一个短版本:

var num = parseInt(prompt('Please enter a number'));
for(var i = 2, flag = 0; i <= num; i++, flag = 0){
  for(var j = 2; j < i; j++) flag = i % j == 0 ? 1 : flag;
  if(!flag) console.log(i);
}


推荐阅读