2016-06-16 2 views
-3

Я работаю над проблемой Эйлера и пытаюсь создать функцию, которая проверяет число, чтобы увидеть, является ли его простым. Я получаю сообщение об ошибке о линии:В javascript я могу использовать оператор модуля (%) для переменных вместо целых чисел?

if (a)%(b)==0{ 

Является ли мой синтаксис неправильно, или это невозможно использовать% на переменную, а на целое число?

var x = Math.sqrt(600851475143); 
var y = Math.round(x); 
y++; 
console.log(y); 

//find all of the prime numbers up to the square root number. Put them in an array. 
//Check each ascending number against the prime numbers in the array to see if %=0 

var primes = [2,3]; 
var a =(3); 

while (a<y){ 
    a++; 
    isPrime(a) 
} 
function isPrime(arr){ 
for (var i = 0; i < arr.length; i++){ 
    var b = primes[i]; 
    //next line is a problem 
    if (a)%(b)==0{ 
     break 
    }else{ 
     primes.push(a); 
     } 
    } 
} 
+2

Да ваш синтаксис неверен. Это 'if (a% b == 0) {' ... '}'. Это не имеет ничего общего с оператором модуля, но с вашим оператором 'if'. – Xufox

+1

Если вам не хватает навыков, чтобы увидеть тривиальную ошибку в ваших скобках, то у вас не будет достаточного навыка, чтобы иметь возможность попытаться решить проблему Эйлера. Вернитесь назад и работайте над более простыми вещами. –

+0

@JK Проблемы с синтаксисом нового языка не означают, что человеку не хватает понимания математика. Вместо этого OP должен попытаться улучшить оснастку (devtools, IDE, linter), которая указывает на синтаксические ошибки. – Bergi

ответ

1

Вы всегда можете использовать операции над переменными. Когда скрипт запускается, переменные заменяются действительными значениями, связанными с переменными.

var a = 3, 
    b = 5; 
if(a%b == 0) {} 

Равен

if(3%5 == 0) {} 

Вы просто использовал неправильный синтаксис в своем заявлении:

if (a)%(b)==0 {} 

Оно должно быть:

if(a%b == 0) {} 

В JavaScript, вам нужно завернуть оператор if с помощью squi ggly скобки, а не переменные. Ваш код вызовет синтаксическую ошибку, потому что оператор if написан неправильно, и он не ожидает случайного модуля, равных знаков и других символов вне круглых скобок.

0

Да, вы можете использовать его

Но проблема здесь в if цикле

if (a)%(b)==0{ // Here it is assuming the the condition statement ends with)

, который после a

В действительности это будет

if ((a)%(b)==0){ // Note braces pointed by ^^ 
^  ^  
     break 
    }else{ 
     primes.push(a); 
     } 
    } 
} 
+0

Это сработало, спасибо вам обоим! Теперь о следующей ошибке для отладки ... – jasonp49