Heim  >  Artikel  >  Web-Frontend  >  Lustige JavaScript-Frage: Unterschied zwischen Primzahlen

Lustige JavaScript-Frage: Unterschied zwischen Primzahlen

黄舟
黄舟Original
2017-02-04 15:09:441314Durchsuche

Primzahlen sind nicht regelmäßig verteilt, was sich in der Differenz zwischen zwei benachbarten Primzahlen widerspiegeln kann.
Der Unterschied zwischen 2 und 3 ist 1, der Unterschied zwischen 3 und 5 ist 2, der Unterschied zwischen 5 und 7 ist zwar 2, aber der Unterschied zwischen 7 und 11 ist 4.
Auf den ersten Blick kann man wirklich kein Muster erkennen, und das stimmt.
Zwischen 2 und 50 können wir die folgenden benachbarten Primzahlpaare mit einer Differenz von 2 finden:
3-5, 5-7, 11-13, 17-19, 29-31, 41-43
Offensichtlich ist das erste Primzahlenpaar, das die oben genannten Bedingungen erfüllt, 3-5.
Was ist also in einem allgemeineren Fall das erste Paar benachbarter Primzahlen von m bis n mit einer Lücke von g?
Der Funktionsprototyp lautet wie folgt:
gap(g, m, n)

Das Beispiel lautet wie folgt:

gap(2, 5, 7) // --> [5, 7]  
gap(4, 130, 200) // --> [163, 167]  
gap(2, 5, 5) // --> null

Bitte beachten Sie, dass dies der Fall sein muss sei der erste, der die g-Differenz für benachbarte Primzahlen erfüllt.
Wenn nicht gefunden, null zurückgeben.
Für diese Art von Fragen, die sich mit Primzahlen befassen, müssen wir alle zwangsläufig eine Funktion zur Bestimmung von Primzahlen einführen. Manchmal frage ich mich, wie cool es wäre, wenn diese Funktion in den ECMA-Standard aufgenommen werden könnte !
In Anbetracht der Vielseitigkeit ist das Anwendungsszenario dieser isPrime-Methode jedoch tatsächlich etwas eng und eignet sich nicht für die Bindung an Number.prototype. Daher kann ich sie nur entfernen und einfügen, wenn ich die Fragen erneut beantworte und wieder Schweiß^_^.
Diese Frage selbst ist nicht schwierig und wird zurückgegeben, wenn sie auf ein Primzahlenpaar trifft, das die Bedingungen erfüllt. Das ist alles.

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;  
}

Das Obige ist die interessante Frage zum Inhalt von JavaScript: Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn