2016-06-16 1 views
-3

Je travaille sur un problème Euler et j'essaie de construire une fonction qui vérifie un nombre pour voir si c'est un premier. Je reçois des messages d'erreur de la ligne:En javascript, est-ce que je peux utiliser l'opérateur de module (%) sur des variables au lieu d'entiers?

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

Est-ce ma syntaxe incorrecte ou est-il impossible d'utiliser% sur une variable plutôt sur un entier?

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

Oui Votre syntaxe est erronée. C'est 'if (a% b == 0) {' ... '}}'. Cela n'a rien à voir avec l'opérateur de module, mais avec votre instruction 'if'. – Xufox

+1

Si vous n'avez pas la compétence pour voir l'erreur triviale avec vos parenthèses alors vous êtes loin d'avoir assez de talent pour tenter un problème d'Euler. Retournez et travaillez sur des choses plus simples. –

+0

@JK Avoir des problèmes avec la syntaxe d'un nouveau langage ne signifie pas que l'on n'a pas la compréhension d'un mathématicien. Au lieu de cela, l'OP devrait essayer de meilleurs outils (devtools, IDE, linter) qui pointent les erreurs de syntaxe. – Bergi

Répondre

1

Vous pouvez toujours utiliser des opérations sur des variables. Lorsque le script est exécuté, les variables sont remplacées par les valeurs réelles associées aux variables.

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

Est égal à

if(3%5 == 0) {} 

Vous venez d'utiliser la mauvaise syntaxe dans votre déclaration:

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

Il devrait être:

if(a%b == 0) {} 

En JavaScript, vous avez besoin pour envelopper votre déclaration if avec squi parenthèses ggly, pas les variables. Votre code déclencherait une erreur de syntaxe car l'instruction if est mal écrite et n'attend pas un module aléatoire, des signes égaux et d'autres symboles en dehors des parenthèses.

0

Oui, vous pouvez l'utiliser

Mais la question est ici dans if boucle

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

qui est après a

En réalité, il sera

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

Cela a fonctionné, merci les deux! Maintenant à la prochaine erreur à déboguer ... – jasonp49