# HP Forums

Full Version: (38G) OEIS A008904: Last Non-Zero Digit of Factorial
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
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):```
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):```
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:```
Reference URL's
• HP Forums: https://www.hpmuseum.org/forum/index.php
• :