Supposons que je souhaite allouer un tableau d'entiers pour stocker tous les nombres premiers inférieurs à certains N
. J'aurais alors besoin d'une estimation pour la taille du tableau, E(N)
. Il y a une fonction mathématique qui donne le nombre exact de nombres premiers en dessous de N, c'est le Prime-counting function - pi(n)
. Cependant, il semble impossible de définir la fonction en termes de fonctions élémentaires.Est-il correct d'utiliser une table de valeurs interpolées de la fonction de comptage principal `pi (x)` comme limite supérieure pour un tableau de nombres premiers?
Il existe quelques approximations de la fonction, mais toutes sont des approximations asymptotiques, donc elles peuvent être soit au-dessus ou au-dessous du vrai nombre de nombres premiers et ne peuvent généralement pas être utilisées comme estimation E(N)
.
J'ai essayé d'utiliser des valeurs tabulées de pi(n)
pour certains n
comme power-of-two et d'interpoler entre eux. Cependant, j'ai remarqué que la fonction pi(n)
est convexe, de sorte que l'interpolation entre les points de la table clairsemée peut donner accidentellement des valeurs de E(n)
sous le vrai pi(n)
qui peut entraîner un dépassement de tampon.
Je me suis alors décidé d'exploiter la nature et monotones de pi(n)
utiliser les valeurs de la table de pi(2^(n+1))
comme une estimation bien supérieure pour E(2^n)
un interpoler entre eux cette fois-ci.
Je ne me sens toujours pas complètement certain que pour certains 2^n < X < 2^(n+1)
une interpolation entre pi(2^(n+1))
et pi(2^(n+2))
serait l'estimation supérieure sûre. Est-ce correct? Comment puis-je le prouver?
Il y a aussi un joli 'PrimePi (n) <= (30 * log (113)/113) * n/log (n) pour tout n> 1' dans les commentaires à https://oeis.org/A209883 – mbaitoff
J'appelle le Chebyshev lié, et c'est fini par un énorme 20% à 10^12 (contre 1,8% pour le simple que j'ai montré). Il surestime également à 10^6. La constante peut être réduite au fur et à mesure que x augmente (par exemple 1.1056 pour x> = 96098 ou 1.095 pour x> = 284860), mais c'est toujours une limite très lâche. Panaitopol 1999 a amélioré le résultat R & S à 'x/(log (x) -1.112)' pour x> = 4 et l'erreur à 10^12 tombe à 0.27%. Dusart 1999 est un autre ordre de grandeur, Dusart 2010 encore un autre (quoique pour de grandes valeurs). – DanaJ