HP Forums
(38G) OEIS A008904: Last Non-Zero Digit of Factorial - Printable Version

+- HP Forums (https://www.hpmuseum.org/forum)
+-- Forum: HP Software Libraries (/forum-10.html)
+--- Forum: General Software Library (/forum-13.html)
+--- Thread: (38G) OEIS A008904: Last Non-Zero Digit of Factorial (/thread-9035.html)



(38G) OEIS A008904: Last Non-Zero Digit of Factorial - Gerald H - 09-10-2017 04:57 PM

The programme inserts symbolics in the Sequence App to produce the sequence

https://oeis.org/A008904

NB The position indexes in the Sequence App start at 1, while the OEIS starts the sequence at index zero.

NB This sequence does NOT become periodic.

Code:
RECURSE(U,IFTE(N<6,IFTE(N==3,2,IFTE(N==4,6,4)),(IFTE(U3(N)<2,6,IFTE(U3(N)==2,12,IFTE(U3(N)==3,36,IFTE(U3(N)<7,24,IFTE(U3(N)==7,48,IFTE(U3(N)==8,24,36))))))*3^(U2(N) MOD 4)*U1(U2(N)+1)) MOD 10),1,1)►U1(N):
CHECK 1:
RECURSE(U,INT((N-1)/5),0,0)►U2(N):
RECURSE(U,(N-1) MOD 10,0,1)►U3(N):



RE: (38G) OEIS A008904: Last Non-Zero Digit of Factorial - Gerald H - 09-11-2017 03:54 PM

A slightly improved version of the programme:

Code:
RECURSE(U,IFTE(N<6,IFTE(N==3,2,IFTE(N==4,6,4)),IFTE(U3(N)<2,6,IFTE(U3(N)==2,12,IFTE(U3(N)==3,36,IFTE(U3(N)==7,48,IFTE(U3(N)==9,36,24)))​))*3^(U2(N) MOD 4)*U1(U2(N)+1)) MOD 10,1,1)►U1(N):
CHECK 1:
RECURSE(U,INT((N-1)/5),0,0)►U2(N):
RECURSE(U,(N-1) MOD 10,0,1)►U3(N):



RE: (38G) OEIS A008904: Last Non-Zero Digit of Factorial - Gerald H - 09-26-2017 11:54 AM

While the above symbolics work correctly, the recursion takes too long for large input.

Here a programme that takes integer input from the last entry to the stack & returns the result in Ans in the Home screen:

Code:
Ans►N:
IF Ans<2
THEN
1
ELSE
0►C:
0►P:
N:
WHILE Ans
REPEAT
RUN IQUOT5:
R*P+IFTE(R MOD 2,0,R/2)+C►C:
P+1►P:
Q:
END:
2^(C MOD 4):
IF Ans==1
THEN
6:
END:
END:

The programme IQUOT5 takes an integer from the previous calculation & stores the Remainder on division by 5 in R & quotient in Q, returning Q in Ans.

Code:
Ans►Q:
Ans MOD 5►R:
(Q-Ans)/5►Q: