Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数记录未定义且不是素数_Javascript - Fatal编程技术网

Javascript 函数记录未定义且不是素数

Javascript 函数记录未定义且不是素数,javascript,Javascript,对不起,这个简单而愚蠢的问题 我创建了一个函数,如果一个数字是素数或不是素数,它将返回一个布尔值 function isPrime(num) { var prime = true; for(i = 2; i < num; i++) { if (num % i === 0) { var prime = false break; } } return prime; } 但是由于某种原因,give(),正在将我的日志记录回未定义状态

对不起,这个简单而愚蠢的问题

我创建了一个函数,如果一个数字是素数或不是素数,它将返回一个布尔值

function isPrime(num) {
  var prime = true;

  for(i = 2; i < num; i++) {
    if (num % i === 0) {
      var prime = false
      break;
    }
  }

  return prime;
}
但是由于某种原因,
give()
,正在将我的日志记录回未定义状态

我不知道为什么,谢谢你的帮助

提前谢谢各位。对于任何输入错误,我深表歉意。

函数give(userInput){
function give(userInput){

  // i is less or equal to the userInput
  for(let i = 0; i <= userInput; i++) {
    if(isPrime(i)) {
      console.log(i);
    }
  }
}
//i小于或等于userInput
对于(设i=0;i您根本没有声明
i
。这意味着
i
是在全局范围内创建的:
isPrime()
give()
都在引用(并修改相同的
i
),这是一个问题

give()
中循环的另一个问题:

只有当用户输入“2”时,循环体才会执行

修改后的代码应如下所示:

function isPrime( num ) {
  let prime = true ;

  for( let i = 2 ; i < num && prime ; i++ ) {
      prime = prime && ( num % i !== 0 );
  }

  return prime;
}

function give( userInput ) {
  for( let i = 1 ; i <= userInput ; i++ ) {
    if ( isPrime(i) ){
      console.log(i);
    }
  }
}

将(i=1;i===userInput-1;i++)的
更改为(i=1;i关于
if(isPrime(i)==true)
if(isPrime(i))
就足够了。停止在for循环中重新定义变量,在for循环中将此
var prime=false
更改为just
prime=false
确保
userInput
是一个数字。
userInput=parseInt(userInput)
应该这样做。@Nicholas Carey,感谢缩进重新格式化!我正要指出,没有缩进是一种负担……这确实解决了我的问题。谢谢你的帮助。
for(i = 1; i === userInput - 1; i++) { ... }
function isPrime( num ) {
  let prime = true ;

  for( let i = 2 ; i < num && prime ; i++ ) {
      prime = prime && ( num % i !== 0 );
  }

  return prime;
}

function give( userInput ) {
  for( let i = 1 ; i <= userInput ; i++ ) {
    if ( isPrime(i) ){
      console.log(i);
    }
  }
}
1
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97