


Programme JavaScript pour compter les nombres premiers dans une plage
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") }
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") }
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);
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);
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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.

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.

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 ...

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.

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.

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 à

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

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
