使用java脚本

时间:2016-09-29 12:18:57

标签: javascript function syntax-error

我正在尝试此代码

var sum = 0

for (i = 0; i < 2000000; i++) {

function checkIfPrime() {

    for (factor = 2; factor < i; factor++) {
        if (i % factor = 0) {
            sum = sum;
        }
        else {
            sum += factor;
        }
    }
}
}
document.write(sum);  

我收到此错误:

  

作业中的左侧无效

6 个答案:

答案 0 :(得分:1)

将if(i%factor = 0)更改为if(i%factor == 0)并删除for循环中的函数checkIfPrime()。

var sum = 0

for (i = 0; i < 2000000; i++) { 
   for (factor = 2; factor < i; factor++) {
      if (i % factor == 0) {
        sum = sum;
      }
      else {
        sum += factor;
      }
    }
} 
document.write(sum);

循环内部的功能毫无意义。

答案 1 :(得分:1)

function sumPrimes(num) {
  var sum = 0;
  for (var i = 2; i < num; i++) {
    if (isPrime(i)) {
      sum += i;
      console.log(sum);
    }
  }
  return sum;
}

function isPrime(num) {
  if (num <= 1) return false;
  else if (num <= 3) return true;
  else if (num % 2 == 0 || num % 3 == 0) return false;
  var i = 5;
  while (i * i <= num) {
    if (num % i == 0 || num % (i + 2) == 0) return false;
    i += 6;
  }
  return true
}

console.log(sumPrimes(2000000));

答案 2 :(得分:0)

看起来你的代码输出了错误的结果,例如6以下的素数是2,3和5,它们的总和是10,在这种情况下你的代码输出14。 这是另一个输出 max 值以下的素数之和的代码:

var sieve = [], primes = [], sum = 0, max = 5;

for (var i = 2; i <= max; ++i) {
    if (!sieve[i]) {
        // i has not been marked -- it is prime
        sum += i;
        for (var j = i << 1; j <= max; j += i) {
            sieve[j] = true;
        }
    }
}
console.log(sum);

归功于How to find prime numbers between 0 - 100?

答案 3 :(得分:0)

好吧,我做了250,否则我的屏幕会冻结。你把它们放在一个空数组中之后你必须首先列出素数,我将primeNumbers从2调用到你想要的任何数字。然后我创建一个函数来过滤素数,然后用另一个名为sum的变量中的reduce方法将它们全部添加并返回该变量。

  var primeNumbers =[];

    for(var i = 2; i < 250; i++){
        primeNumbers.push(i);

      }//for loop

      function isPrime(value){
        for(var x=2; x< value; x++){

        if(value % x===0){
          return false;
        }

        }//for loop
        return true;
      }//function isPrime to filter

     var sum = primeNumbers.filter(isPrime).reduce(function(acc, val) {
      return acc + val;
    }, 0);


    console.log(sum);

答案 4 :(得分:0)

当你在循环中使用变量时,你需要声明它们。在这种情况下你有两点

  1. 我未被宣布
  2. factor is not declare
  3. 您的if (i % factor = 0)错误,正如上面某些人所指出的那样。

    此外,您永远不会调用checkIfPrime()方法。我不是你创造它们的原因。另外,我改进了你的checkIfPrime()方法。请在下面的代码中调用sumOfPrimes()方法,它应该工作。您可以根据需要进行修改

    function sumOfPrimes()
    {
       var sum =0;
       for (var i = 0; i < 2000000; i++) 
       {
    
            var temp = Math.sqrt(i);
    
            for (var factor = 2; factor < temp; factor++)
            {
                if (i % factor === 0) 
                {
                    sum += factor;
                }
            }
    
    }
       console.log(sum);
    }
    

答案 5 :(得分:-1)

尝试更改此行if (i % factor = 0) { 至  if (i % factor == 0) {