在javascript中,我可以对变量使用模运算符(%)而不是整数吗?

时间:2016-06-16 03:03:10

标签: javascript operators modulus

我正在研究Euler问题,并且正在尝试构建一个检查数字的函数,以查看它是否为素数。我收到有关该行的错误消息:

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 个答案:

答案 0 :(得分:1)

您始终可以对变量使用操作。运行脚本时,变量将替换为与变量关联的实际值。

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

等于

if(3%5 == 0) {}

您刚才在语句中使用了错误的语法:

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

应该是:

if(a%b == 0) {}

在JavaScript中,您需要使用波浪括号而不是变量来包装if语句。您的代码会触发语法错误,因为if语句写得不正确,并且它不会出现随机模数,等号和括号外的其他符号。

答案 1 :(得分: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);
        }
    }
}