Table des matières
Loi violente
Méthode directe pour déterminer si un nombre est premier
Exemple
Méthodes mathématiques
Le nombre de nombres premiers compris entre L et R
Criblage par l'algorithme Eratosthène
Complexité temporelle et spatiale
Conclusion
Maison interface Web js tutoriel Programme JavaScript pour compter les nombres premiers dans une plage

Programme JavaScript pour compter les nombres premiers dans une plage

Sep 12, 2023 am 09:37 AM

用于计算范围内素数的 JavaScript 程序

Un nombre premier est un nombre qui a exactement deux diviseurs parfaits. Nous verrons deux manières de trouver le nombre de nombres premiers dans une plage donnée. La première consiste à utiliser une méthode de force brute, qui présente une complexité temporelle assez élevée. Nous améliorerons ensuite cette méthode et adopterons l'algorithme Sieve d'Eratosthène pour avoir une meilleure complexité temporelle. Dans cet article, nous trouverons le nombre total de nombres premiers dans une plage donnée à l'aide du langage de programmation JavaScript.

Loi violente

Tout d'abord, dans cette méthode, nous apprendrons comment déterminer si un nombre est premier ou non, nous pouvons le trouver de deux manières. Une méthode a une complexité temporelle O(N) et l’autre méthode a une complexité temporelle O(sqrt(N)).

Méthode directe pour déterminer si un nombre est premier

Exemple

Tout d'abord, nous allons effectuer une boucle for jusqu'à obtenir un nombre, et compter les nombres qui peuvent diviser le nombre. Si le nombre qui peut diviser le nombre n'est pas égal à 2, alors le nombre n'est pas un nombre premier, sinon le nombre est premier. le nombre est un nombre premier. Regardons le code -

function isPrime(number){
   var count = 0;
   for(var i = 1;i<=number;i++)    {
      if(number%i == 0){
         count = count + 1;
      }
   }
   if(count == 2){
      return true;
   }
   else{
      return false;
   }
}

// checking if 13 and 14 are prime numbers or not 
if(isPrime(13)){
   console.log("13 is the Prime number");
}
else{    
   console.log("13 is not a Prime number")
}

if(isPrime(14)){
   console.log("14 is the Prime number");
}
else{
   console.log("14 is not a Prime number")
}
Copier après la connexion

Dans le code ci-dessus, nous passons de 1 à nombre, trouvons le nombre dans la plage de nombres qui peut diviser le nombre donné, et obtenons combien de nombres peuvent diviser le nombre donné, et imprimons le résultat sur cette base.

La complexité temporelle du code ci-dessus est O(N), vérifier si chaque nombre est premier coûtera O(N*N), ce qui signifie que ce n'est pas un bon moyen de vérifier.

Méthodes mathématiques

Nous savons que lorsqu'un nombre divise complètement un autre nombre, le quotient est également un entier parfait, c'est-à-dire que si un nombre p peut être divisé par un nombre q, le quotient est r, c'est-à-dire q * r = p. r divise également le nombre p par le quotient q. Cela signifie donc que les diviseurs parfaits viennent toujours par paires.

Exemple

Grâce à la discussion ci-dessus, nous pouvons conclure que si nous vérifions uniquement la division par la racine carrée de N, cela donnera le même résultat en très peu de temps. Voyons le code de la méthode ci-dessus -

function isPrime(number){
   if(number == 1) return false
   var count = 0;
   for(var i = 1;i*i<=number;i++){
      if(number%i == 0){
         count = count + 2;
      }
   }
   if(count == 2){
      return true;
   }
   else{
      return false;
   }
}
// checking if 67 and 99 are prime numbers or not 
if(isPrime(67)){
   console.log("67 is the Prime number");
}
else{
   console.log("67 is not a Prime number")
}
if(isPrime(99)){
   console.log("99 is the Prime number");
}
else{
   console.log("99 is not a Prime number")
}
Copier après la connexion

Dans le code ci-dessus, nous venons de changer le code précédent en changeant la portée de la boucle for, car désormais elle ne vérifiera que la première racine carrée de N éléments, et nous avons augmenté le nombre de 2.

La complexité temporelle du code ci-dessus est O(sqrt(N)), ce qui est mieux, ce qui signifie que nous pouvons utiliser cette méthode pour trouver le nombre de nombres premiers qui existent dans une plage donnée.

Le nombre de nombres premiers compris entre L et R

Exemple

Nous allons implémenter le code précédemment donné dans une plage et compter le nombre de nombres premiers dans une plage donnée. Implémentons le code -

function isPrime(number){
   if(number == 1) return false
   var count = 0;
   for(var i = 1;i*i<=number;i++)    {
      if(number%i == 0){
         count = count + 2;
      }
   }
   if(count == 2){
      return true;
   }
   else{
      return false;
   }
}
var L = 10
var R = 5000
var count = 0
for(var i = L; i <= R; i++){
   if(isPrime(i)){
      count = count + 1;
   }
}
console.log(" The number of Prime Numbers in the given Range is: " + count);
Copier après la connexion

Dans le code ci-dessus, nous parcourons la plage de L à R en utilisant une boucle for, et à chaque itération, nous vérifions si le nombre actuel est premier. Si le nombre est premier, alors nous incrémentons le compte et enfin imprimons la valeur.

La complexité temporelle du code ci-dessus est O(N*N), où N est le nombre d'éléments dans Range.

Criblage par l'algorithme Eratosthène

Exemple

L'algorithme Sieve d'Eratosthène fonctionne très efficacement et peut trouver le nombre de nombres premiers dans une plage donnée en un temps O(Nlog(log(N))) Par rapport à d'autres algorithmes, il est très rapide. Le tamis occupe de l'espace O(N), mais cela n'a pas d'importance car le temps est très efficace. Regardons le code et ensuite nous passerons à l'explication du code -

var L = 10
var R = 5000
var arr = Array.apply(null, Array(R+1)).map(Number.prototype.valueOf,1);
arr[0] = 0
arr[1] = 0

for(var i = 2;i<=R;i++){
   if(arr[i] == 0){
      continue;
   }
   for(var j = 2; i*j <= R; j++){
      arr[i*j] = 0;
   }
}

var pre = Array.apply(null, Array(R+1)).map(Number.prototype.valueOf,0);
for(var i = 1; i<= R;i++){
   pre[i] = pre[i-1] + arr[i];
}
answer = pre[R]-pre[L-1]
console.log("The number of Prime Numbers in the given Range is: " + answer);
Copier après la connexion

Dans le code ci-dessus, nous voyons l'implémentation du Tamis d'Eratosthène. Nous avons d'abord créé un tableau contenant la taille R, puis nous avons parcouru le tableau en utilisant la boucle for et pour chaque itération, si le nombre actuel n'est pas 1, cela signifie qu'il n'est pas premier, sinon il est premier et nous avons tous les nombres inférieurs à R qui sont les multiples du nombre premier actuel sont supprimés. Nous créons ensuite un tableau de préfixes qui stockera le nombre premier de 0 à l'index actuel et pourra fournir une réponse à chaque requête comprise entre 0 et R en temps constant.

Complexité temporelle et spatiale

La complexité temporelle du code ci-dessus est O(N*log(log(N))), ce qui est bien meilleur que O(N*N) et O(N*(sqrt(N))). Par rapport au code précédent, le code ci-dessus a une complexité spatiale plus élevée de O(N).

Conclusion

Dans ce tutoriel, nous avons appris à trouver le nombre de nombres premiers dans une plage donnée à l'aide du langage de programmation JavaScript. Un nombre premier est un nombre qui possède exactement deux diviseurs parfaits. 1 n’est pas un nombre premier car il n’a qu’un seul diviseur parfait. Nous avons vu trois méthodes avec une complexité temporelle de O(N*N), O(N*sqrt(N)) et O(N*log(log(N))). De plus, la complexité spatiale des deux premières méthodes est O(1) et la complexité spatiale de la méthode Sieve of Eratosthène est O(N).

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment créer et publier mes propres bibliothèques JavaScript? Comment créer et publier mes propres bibliothèques JavaScript? Mar 18, 2025 pm 03:12 PM

L'article discute de la création, de la publication et du maintien des bibliothèques JavaScript, en se concentrant sur la planification, le développement, les tests, la documentation et les stratégies de promotion.

Comment optimiser le code JavaScript pour les performances dans le navigateur? Comment optimiser le code JavaScript pour les performances dans le navigateur? Mar 18, 2025 pm 03:14 PM

L'article traite des stratégies pour optimiser les performances JavaScript dans les navigateurs, en nous concentrant sur la réduction du temps d'exécution et la minimisation de l'impact sur la vitesse de chargement de la page.

Que dois-je faire si je rencontre l'impression de code brouillé pour les reçus en papier thermique frontal? Que dois-je faire si je rencontre l'impression de code brouillé pour les reçus en papier thermique frontal? Apr 04, 2025 pm 02:42 PM

Des questions et des solutions fréquemment posées pour l'impression de billets thermiques frontaux pour le développement frontal, l'impression de billets est une exigence commune. Cependant, de nombreux développeurs mettent en œuvre ...

Comment déboguer efficacement le code JavaScript à l'aide d'outils de développeur de navigateur? Comment déboguer efficacement le code JavaScript à l'aide d'outils de développeur de navigateur? Mar 18, 2025 pm 03:16 PM

L'article traite du débogage efficace de JavaScript à l'aide d'outils de développeur de navigateur, de se concentrer sur la définition des points d'arrêt, de l'utilisation de la console et d'analyser les performances.

Comment utiliser les cartes source pour déboguer le code JavaScript minifié? Comment utiliser les cartes source pour déboguer le code JavaScript minifié? Mar 18, 2025 pm 03:17 PM

L'article explique comment utiliser les cartes source pour déboguer JavaScript minifiée en le mappant au code d'origine. Il discute de l'activation des cartes source, de la définition de points d'arrêt et de l'utilisation d'outils comme Chrome Devtools et WebPack.

Comment utiliser efficacement le cadre de collections de Java? Comment utiliser efficacement le cadre de collections de Java? Mar 13, 2025 pm 12:28 PM

Cet article explore une utilisation efficace du cadre de collections de Java. Il met l'accent sur le choix des collections appropriées (liste, set, map, file d'attente) en fonction de la structure des données, des besoins en performances et de la sécurité des threads. Optimisation de l'utilisation de la collection grâce à

TypeScript pour les débutants, partie 2: Types de données de base TypeScript pour les débutants, partie 2: Types de données de base Mar 19, 2025 am 09:10 AM

Une fois que vous avez maîtrisé le didacticiel TypeScript de niveau d'entrée, vous devriez être en mesure d'écrire votre propre code dans un IDE qui prend en charge TypeScript et de le compiler en JavaScript. Ce tutoriel plongera dans divers types de données dans TypeScript. JavaScript a sept types de données: null, non défini, booléen, numéro, chaîne, symbole (introduit par ES6) et objet. TypeScript définit plus de types sur cette base, et ce tutoriel les couvrira tous en détail. Type de données nuls Comme javascript, null en typeScript

Début avec Chart.js: tarte, beignet et graphiques à bulles Début avec Chart.js: tarte, beignet et graphiques à bulles Mar 15, 2025 am 09:19 AM

Ce tutoriel expliquera comment créer des graphiques à tarte, anneaux et bulles à l'aide de chart.js. Auparavant, nous avons appris quatre types de graphiques de graphique. Créer des graphiques à tarte et à anneaux Les graphiques à tarte et les graphiques d'anneaux sont idéaux pour montrer les proportions d'un tout divisé en différentes parties. Par exemple, un graphique à secteurs peut être utilisé pour montrer le pourcentage de lions mâles, de lions féminins et de jeunes lions dans un safari, ou le pourcentage de votes que différents candidats reçoivent lors des élections. Les graphiques à tarte ne conviennent que pour comparer des paramètres ou des ensembles de données uniques. Il convient de noter que le graphique à tarte ne peut pas dessiner des entités avec une valeur nulle car l'angle du ventilateur dans le graphique à tarte dépend de la taille numérique du point de données. Cela signifie toute entité avec une proportion nulle

See all articles