我正在尝试此代码
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);
我收到此错误:
作业中的左侧无效
答案 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);
答案 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)
当你在循环中使用变量时,你需要声明它们。在这种情况下你有两点
您的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) {