Y a-t-il un moyen de trouver la valeur approximative du nième prime?
Est-il une fonction qui renvoie la valeur approximative de la n e premier? Je pense que ce serait quelque chose comme une approximation inverse premier la fonction de compte. Par exemple, si j'ai donné cette fonction 25, il serait de retour à un nombre de l'ordre de 100, ou si j'ai donné cette fonction 1000, il serait de retour à un nombre de l'ordre de 8000. Je n'ai pas de soins si le nombre retourné est premier ou pas, mais je ne veux pas qu'il soit rapide (donc pas de la génération de la première n des nombres de la prime de retour à l' n th.)
Je voudrais ce que je puisse générer le premier n nombres premiers à l'aide d'un tamis (Eratosthène ou Atkin). Par conséquent, le rapprochement de n th l'idéal serait de ne jamais sous-estimer la valeur réelle de l' n e premier.
(Mise à jour: voir ma réponse pour une bonne méthode de recherche de la limite supérieure de la n ème nombre premier.)
source d'informationauteur David Johnstone
Vous devez vous connecter pour publier un commentaire.
Resserrement des limites:
Ces ne devrait jamais être inférieure à la nth_prime, doivent travailler pour un 64-bits d'entrée, et d'un ordre de grandeur ou plus près de la formule de Robin donné plus tôt (ou Wimblik est compliqué gamme limitée de la formule). Pour mon utilisation, j'ai un peu plus petits nombres premiers de la table, donc peut serrer la dernière estimation un peu plus. Techniquement, à partir de formules que nous pourrions utiliser étage() à la place de l'ceil() mais je m'inquiète au sujet de la précision.
Edit: une Autre option pour améliorer un peu tout ça est mise en œuvre des bonnes du premier comte de limites (par exemple, Axler 2014) et en faisant une recherche binaire sur eux. Mon code pour que cette méthode prend ~10x plus que le dessus (toujours en cours d'exécution en vertu d'un ordre de la milliseconde), mais peut réduire le pourcentage d'erreur par un ordre de grandeur.
Si vous souhaitez un devis pour le n-ième nombre premier, vous pouvez le faire:
Enfin, si vous avez une très rapide, le premier comte de la méthode comme celle de l'AMT implémentations (il y a trois implémentations open source), vous pouvez écrire un rapide précis nth_prime méthode. Le calcul de la 10^10, le premier peut être fait en quelques millisecondes, et le 10^13 en quelques secondes (sur un ordinateur rapide). Les approximations sont extrêmement rapides à toutes les tailles et de travail de plus en plus nombreux, mais tout le monde a une idée différente de ce "grand" signifie.
Merci pour toutes ces réponses. Je soupçonne qu'il y a quelque chose d'assez simple comme ça, mais je ne pouvais pas le trouver à l'époque. J'ai fait des recherches un peu plus aussi.
Comme je le veux pour un tamis pour générer le premier n nombres premiers, je veux le rapprochement être supérieure ou égale à la ne premier. (Donc, je veux que la limite supérieure de la nème nombre premier.)
Wikipedia donne l'inī egalitī pour
n >= 6
où
p_n
est le ne premier, etlog
est le logarithme naturel. C'est un bon début, mais il peut surestimer par une quantité non négligeable. Cet article dans Le Journal De Mathématiques De Niveau Collégial donne un resserrement de la limite supérieure pour lesn >= 7022
C'est beaucoup plus serré lié comme le montre le tableau suivant
J'ai mis en place mon ne premier approximation de la fonction pour utiliser la seconde approximation pour
n >= 7022
la première approximation pour6 <= n < 7022
et un tableau de recherche pour les 5 premiers nombres premiers.(Bien que la première méthode n'est pas très étroitement liés, en particulier pour la plage où je l'utilise, je ne suis pas concerné car je veux ça pour un tamis, et d'un tamis de plus petits nombres est le calcul à bas prix.)
Théorème des nombres premiers donne un certain nombre de nombres premiers en dessous d'un seuil de valeur, de sorte qu'il pourrait être utilisé pour donner une valeur approximative pour le n-ième nombre premier.
Comme une estimation approximative, vous pouvez utiliser n*ln(n) comme une approximation pour le n-ième nombre premier. Il est beaucoup plus complexe, mais aussi plus précise de la méthode, dont les détails vous pouvez trouver sur Wikipedia ici.
Mon Meilleur Premier(n) Estimation
Voici ma plus récente de la plus expérimentale de la formule.
btw. Les dix billionième premier est
323,780,508,946,331
cette formule fonctionne très bien à cette échelle ne sais pas si il continue de s'approcher à moins den*ln(n)+n*(ln(ln(n))-0.9385)
.Une mise en œuvre efficace est sans doute pas possible avec un tamis. Pensez à ce qui pourrait arriver si vous voulez avoir la première 10.000 nombres premiers. Vous devrez probablement faire un tamis au-dessus d'un énorme plus grande quantité de nombres.
Votre propre implémentation cette question et ma réponse sont de bons moyens à mettre en œuvre sans savoir le rapp. la valeur d'un premier
Pour compléter Dana J à la limite Supérieure de cette formule devrait vous donner une bonne borne inférieure.