Maison > interface Web > js tutoriel > le corps du texte

Comment implémenter l'énumération anti-prime Emrips en javascript

亚连
Libérer: 2018-06-22 14:33:06
original
1474 Les gens l'ont consulté

L'éditeur suivant partagera avec vous un exemple de code pour implémenter l'énumération anti-prime Emrips en JavaScript. Il a une bonne valeur de référence et j'espère qu'il sera utile à tout le monde. Suivons l'éditeur pour y jeter un œil

Aujourd'hui, j'ai vu un kata, qui proposait le concept d'"emirps" : après avoir inversé un nombre premier, un nombre premier différent est obtenu. Ce nombre est appelé "emirps". .

Par exemple : 13,17 sont des nombres premiers, 31,71 sont aussi des nombres premiers, 13 et 17 sont des "émirps". Mais les nombres premiers 757 787 797 sont des nombres premiers palindromiques, ce qui signifie que les nombres inversés sont les mêmes que les nombres originaux, ils ne sont donc pas considérés comme des « émirps ».

La question nécessite d'écrire une fonction qui saisit un entier positif n et renvoie le nombre d'"emirps" inférieur à n, le plus grand "emirps" et la somme de tous les "emirps" inférieurs à n.

L'idée pour résoudre le problème est d'abord d'énumérer tous les nombres premiers inférieurs à n, puis d'éliminer les nombres premiers palindromes et les nombres composés après avoir été inversés.

Écrivez d'abord la fonction pour déterminer les nombres premiers

Principalement basé sur trois conclusions mathématiques :

Tous les nombres composés sont le produit de plusieurs nombres premiers

Si un nombre peut être factorisé, alors les deux facteurs doivent être un inférieur ou égal à sqrt(n) et un supérieur supérieur ou égal à sqrt(n ).

Tous les nombres premiers supérieurs à 3 sont sous la forme 6X+1 ou 6X-1, qui sont des nombres adjacents multiples de 6, mais tous les 6X+1 ou 6X-1 ne sont pas des nombres premiers.

La première conclusion peut être prouvée par preuve par contradiction

La troisième conclusion est prouvée :

Nous exprimons toutes les nombres Il se présente sous la forme suivante 6X-1, 6X, 6X+1, 6X+2, 6X+3, 6X+4 (X est un entier positif) 6X => 3x+1) 6X +3 => 3(2x+1) 6X+4 => 2(3x+2) Il peut être prouvé que ce ne sont certainement pas des nombres premiers, c'est-à-dire que les nombres premiers ne peuvent être que 6X- 1 ou 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;
}
Copier après la connexion

Supprimer les nombres premiers palindromiques et les nombres composés après inversion

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

Enfin, sortez le résultat souhaité

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

Regardez le résultat et l'heure de sortie

n=1000000 :

n=10000000 :

J'ai compilé ce qui précède pour vous, j'espère que cela vous sera utile à l'avenir.

Articles associés :

Comment implémenter un mécanisme d'événements personnalisés à l'aide de Javascript

Interprétation détaillée de la structure des données cartographiques en javascript

Comment développer un calendrier hebdomadaire en deux dimensions à l'aide de Javascript

À propos de JS Abstract Factory Pattern (tutoriel détaillé)

sur Comment résoudre le conflit entre la syntaxe Django et Vue

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

É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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!