(49G) Prime Counting Programme
08-02-2015, 08:55 AM (This post was last modified: 06-15-2017 01:41 PM by Gene.)
Post: #1
 Gerald H Senior Member Posts: 1,528 Joined: May 2014
(49G) Prime Counting Programme
For integer input the programme returns the number of prime numbers up to & including the input.

eg For input

5

the programme returns

3.

Maximum input is 1680, higher values produce an error.

Code:
 ::   CK1&Dispatch   BINT1   ::     ::       %ABS       COERCEDUP       BINT2       #<case       DROPZERO       DUP       BINT4       #<case       #1-       DUP       # 690       #>       caseSIZEERR       '       ::         BINT1         #=casedrop         ::           #1+           #2/         ;         2DUP         #1-         2GETEVAL         ROT         1GETLAM         4PICK         NTHCOMPDROP         #/         SWAPDROP         ROT         #1-         2GETEVAL         #-       ;       {         BINT2         BINT3         BINT5         BINT7         BINT11         BINT13         2REAL         BINT19         BINT23         BINT29         BINT31         BINT37         BINT41       }       FPTR2 ^2LAMBIND       DUP       UNCOERCE       %SQRT       %IP       COERCE       1GETLAM       SWAP'       #>       POSCOMP       #1-DUP       #1-UNROT       2GETEVAL       ABND       #+     ;     UNCOERCE   ; ;
08-03-2015, 03:22 PM
Post: #2
 Gerald H Senior Member Posts: 1,528 Joined: May 2014
RE: HP 49G: Prime Counting Programme
An APPROXIMATE solution to the prime count question is given by Locker-Ernst's formula

p(n) ≈ n / ( H(n) - 3 / 2 )

H(n) the nth harmonic number.

In the programme below the harmonic number function is replaced by the HP 49G function Psi(n) (FPTR 7 11E is the Psi function for long reals), as Psi(n+1)+gamma gives H(n).

Code:
 ::   CK1&Dispatch   BINT1   ::     %>%%     DUP     %%1+_     FPTR 7 11E     %% 9.22784335098467E-1     %%-     %%/     %%>%   ; ;
 « Next Oldest | Next Newest »

User(s) browsing this thread: 1 Guest(s)