Maison > interface Web > js tutoriel > Question JavaScript amusante : Différence entre les nombres premiers

Question JavaScript amusante : Différence entre les nombres premiers

黄舟
Libérer: 2017-02-04 15:09:44
original
1331 Les gens l'ont consulté

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
Copier après la connexion

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;  
}
Copier après la connexion

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 (m.sbmmt.com) !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal