Maison > Article > interface Web > Question JavaScript amusante : Différence entre les nombres premiers
Les nombres premiers ne sont pas régulièrement distribués, ce qui peut se refléter dans la différence entre deux nombres premiers adjacents.
La différence entre 2 et 3 est 1, la différence entre 3 et 5 est 2, la différence entre 5 et 7 est bien 2, mais la différence entre 7 et 11 est 4.
À première vue, on ne trouve vraiment pas le motif, et c’est vrai.
Entre 2 et 50, on peut trouver les paires adjacentes de nombres premiers suivantes avec une différence de 2 :
3-5, 5-7, 11-13, 17-19, 29-31, 41- 43
Évidemment, la première paire de nombres premiers qui satisfait aux conditions ci-dessus est 3-5.
Alors, dans un cas plus général, quel est la première paire de nombres premiers adjacents de m à n avec un écart de g ?
Le prototype de la fonction est le suivant :
gap(g, m, n)
L'exemple est le suivant :
gap(2, 5, 7) // --> [5, 7] gap(4, 130, 200) // --> [163, 167] gap(2, 5, 5) // --> null
Veuillez noter qu'il doit être le premier qui répond à la différence g pour les nombres premiers adjacents.
S'il n'est pas trouvé, renvoie null.
Pour ce type de questions traitant des nombres premiers, nous devons tous inévitablement introduire une fonction pour déterminer les nombres premiers. Parfois, je ne peux m'empêcher de me demander à quel point ce serait cool si cette fonction pouvait être incluse dans la norme ECMA. !
Cependant, compte tenu de la polyvalence, le scénario d'application de cette méthode isPrime est en effet un peu étroit, et elle ne convient pas pour être liée à Number.prototype, donc je ne peux que l'enlever et la coller en refaisant les questions et encore une fois, transpirez ^_^.
Cette question en elle-même n'est pas difficile. C'est une boucle et revient lorsqu'elle rencontre une paire de nombres premiers qui remplit les conditions, elle renvoie null.
Number.prototype.isPrime = function(){ var maxFactor = Math.floor(Math.sqrt(this)); for(var i=2;i<=maxFactor;i++){ if(this % i === 0){ return false; } } return true; }; function gap(g, m, n) { var firstPrime; var secondPrime; for(var i=m;i<=n;i++){ if(i.isPrime()){ firstPrime = secondPrime; secondPrime = i; if(secondPrime - firstPrime === g){ return [firstPrime,secondPrime]; } } } return null; }
Ce qui précède est le contenu de la question intéressante JavaScript : différence entre les nombres premiers. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !