Heim > Web-Frontend > js-Tutorial > Hauptteil

So implementieren Sie die Emrips-Anti-Prime-Aufzählung in Javascript

亚连
Freigeben: 2018-06-22 14:33:06
Original
1474 Leute haben es durchsucht

Der folgende Editor wird Ihnen einen Beispielcode für die Implementierung der Emrips-Anti-Prime-Aufzählung in JavaScript mitteilen. Er hat einen guten Referenzwert und ich hoffe, dass er für alle hilfreich sein wird. Folgen wir dem Herausgeber, um einen Blick darauf zu werfen

Heute habe ich eine Kata gesehen, die das Konzept der „Emirps“ vorschlägt: Nachdem eine Primzahl invertiert wurde, erhält man eine andere Primzahl. Diese Zahl wird „Emirps“ genannt.

Zum Beispiel: 13,17 sind Primzahlen, 31,71 sind ebenfalls Primzahlen, 13 und 17 sind „Emirps“. Aber die Primzahlen 757.787.797 sind palindromische Primzahlen, was bedeutet, dass die invertierte Zahl mit der ursprünglichen Zahl identisch ist und daher nicht als „Emirpen“ betrachtet werden.

Die Frage erfordert das Schreiben einer Funktion, die eine positive ganze Zahl n eingibt und die Anzahl der „Emirps“ kleiner als n, die größten „Emirps“ und die Summe aller „Emirps“ kleiner als n zurückgibt.

Die Idee zur Lösung des Problems besteht darin, zunächst alle Primzahlen kleiner als n aufzuzählen und dann die palindromischen Primzahlen und die zusammengesetzten Zahlen nach der Umkehrung zu eliminieren.

Schreiben Sie zunächst die Funktion zur Bestimmung von Primzahlen

Hauptsächlich basierend auf drei mathematischen Schlussfolgerungen:

Alle zusammengesetzten Zahlen sind das Produkt mehrerer Primzahlen

Wenn eine Zahl faktorisiert werden kann, müssen die beiden Faktoren eins kleiner oder gleich sqrt(n) und eins größer sein größer oder gleich sqrt(n ).

Alle Primzahlen größer als 3 haben die Form 6X+1 oder 6X-1, das sind benachbarte Zahlen, die Vielfache von 6 sind, aber nicht alle 6X+1 oder 6X-1 sind Primzahlen.

Die erste Schlussfolgerung kann durch Widerspruchsbeweis bewiesen werden

Die dritte Schlussfolgerung ist bewiesen:

Wir drücken alles aus Zahlen Es hat die folgende Form: 6X-1, 6X, 6X+1, 6X+2, 6X+3, 6X+4 (X ist eine positive ganze Zahl) 6X => 2*3x 6X+2 => 3x+1) 6X +3 => 3(2x+1) 6X+4 => 2(3x+2) Es kann bewiesen werden, dass es sich definitiv nicht um Primzahlen handelt, das heißt, Primzahlen können nur 6X- sein 1 oder 6X-1

Code:

function isPrimeNumber(num){
  
 if(num == 2 || num == 3){
  return true;
 }/*2、3特殊处理*/
  
 if(num % 6 != 1 && num % 6 != 5){
  return false;
 }/*根据结论三排除*/
  
 for(var i=5;i<=Math.sqrt(num);i+=6){
  if(num % i == 0 || num % (i+2) == 0){
   return false;
  }
 }/*根据结论二、结论三排除*/
  
 return true;
}
Nach dem Login kopieren

Entfernen Sie palindromische Primzahlen und Zahlen, die nach der Inversion zusammengesetzt sind

Code:

function emirpNumber(num){
 
 var reverseNumber = Number(String(num).split(&#39;&#39;).reverse().join(&#39;&#39;))
  
 if(reverseNumber != num && isPrimeNumber(reverseNumber)){
  return true;
 }
 else{
  return false;
 }
}
Nach dem Login kopieren

Endgültige Ausgabe Gewünschtes Ergebnis

Code:

function findEmirp(n){
 
 var emirpGroup = [];
 
 for(var i=1;i<n;i++){
  if(isPrimeNumber(i) && emirpNumber(i)){
   emirpGroup.push(i);   
  }
 }
  
 return [
  &#39;n为:&#39; + n,
  &#39;数量为:&#39; + emirpGroup.length,
  &#39;最大数:&#39; + emirpGroup[emirpGroup.length - 1],
  &#39;求和:&#39; + emirpGroup.reduce(function(total,current){
   return total + current;
  })
 ]
}
Nach dem Login kopieren

Sehen Sie sich die Ausgabeergebnisse und die Zeit an

n =1000000:

n=10000000:

Ich habe das Obige für Sie zusammengestellt und hoffe, dass es Ihnen in Zukunft hilfreich sein wird.

Verwandte Artikel:

So implementieren Sie einen benutzerdefinierten Ereignismechanismus mit Javascript

Detaillierte Interpretation der Kartendatenstruktur in Javascript

So entwickeln Sie einen zweidimensionalen Wochenansichtskalender mit Javascript

Über JS Abstract Factory Pattern (ausführliches Tutorial)

unter So lösen Sie den Konflikt zwischen Django- und Vue-Syntax

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Emrips-Anti-Prime-Aufzählung in Javascript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!