Trouver un nombre premier après un nombre donné
Comment puis-je trouver le moins nombre premier supérieur à un nombre donné? Par exemple, sur la 4, j'ai besoin de 5; considérant 7, j'ai besoin de 11.
Je voudrais savoir quelques idées sur les meilleurs algorithmes pour ce faire. Une méthode que j'ai pensé est de générer des nombres premiers nombres à travers le Crible d'Eratosthène, et ensuite trouver le premier après le nombre donné.
- Ceci est lié à l'algorithme de programmation. Pourquoi est-il fermé?
- Depuis personne n'a jugé bon d'expliquer pourquoi ils ont fermé, je vais voter pour ré-ouvrir. Cela ne semble pas hors-sujet pour moi.
- devrait être obligatoire pour "ferme-porte" pour atleast révéler la raison de la clôture!
- Dit directement ci-dessous pourquoi ils ont choisi de le fermer. Fermé comme hors-sujet dans ce cas. J'ai voté pour une ré-ouvert même si, comme il semble ne pas être hors sujet pour moi.
- Aimeriez-vous revoir votre réponse? 🙂
Vous devez vous connecter pour publier un commentaire.
D'autres méthodes ont été proposées et je pense qu'ils sont bons, mais cela dépend vraiment de combien vous voulez avoir à stocker ou de calcul sur place. Par exemple, si vous êtes à la recherche pour le prochain premier après un très grand nombre, puis à l'aide du Crible d'Eratosthène peut-être pas si grande en raison du nombre de bits que vous aurait besoin de stocker.
Alternativement, vous pouvez vérifier tous les entiers impairs entre (et y compris) 3 et sqrt(N) sur chaque nombre impair de N plus grand que le nombre d'entrée jusqu'à ce que vous trouver le bon numéro. Bien sûr, vous pouvez arrêter la recherche lorsque vous trouvez qu'il est composite.
Si vous souhaitez une autre méthode, alors je vous recommande d'utiliser le De Miller-Rabin test de primalité sur tous les nombres impairs ci-dessus le nombre d'entrée (en supposant que l'entrée est > 1) jusqu'à ce qu'un premier est trouvé. Si vous suivez la liste située au bas de la page, de numéros de
a
pour vérifier les plages, vous pouvez réduire de manière importante le nombre dea
s vous avez besoin de vérifier. Bien sûr, vous pourriez vouloir vérifier au moins quelques-uns des plus petits nombres premiers (3,5,7,11 par exemple) avant de vérifier avec Miller-Rabin.Source: Wikipedia
Donc si je me suis donné un certain nombre, disons n, que je puisse vérifier dans la gamme (n, 2*n) [intervalle ouvert à l'exclusion de n et 2*n]
while(true)
et d'éliminer toutes les comparaisons?Je l'ai fait avant.
Seul ajout est de Bertrand Théorème de Rajendra Réponse.
Et readymade code de topcoder.
En général, je vois deux façons de le faire.
peut-être cela aide aussi, (il suffit de remplacer 2 avec votre Numéro et N avec une infinie 😀 )
trouver tous les nombres premiers entre 2 et N
J'aurais une grande table de recherche et ensuite de rechercher le nombre donné et d'y répondre avec la personne suivante dans la séquence.
Fonctionne bien que s'il est connu (sensible) limite supérieure de la gamme de nombres donnés.