OFFSET
0,2
COMMENTS
Except for n = 1, a(n) is also the last nonzero digit of (2^n)!. See the third Bomfim link. - Washington Bomfim, Jan 04 2011
LINKS
Washington Bomfim, Table of n, a(n) for n = 0..1000
Washington Bomfim, An algorithm to find the last nonzero digit of n!.
Washington Bomfim, A property of the last non-zero digit of factorials.
FORMULA
From Washington Bomfim, Jan 04 2011: (Start)
a(n) = A008904(10^n).
a(0) = 1, a(1) = 8, if n >= 2, with
2^n represented in base 5 as (a_h, ..., a_1, a_0)_5,
t = Sum_{i = h, h-1, ..., 0} (a_i even),
x = Sum_{i = h, h-1, ..., 1} (Sum_{k = h, h-1, ..., i} (a_i)),
z = (x + t/2) mod 4, and y = 2^z,
a(n) = 6*(y mod 2) + y*(1 -( y mod 2)). (End)
EXAMPLE
a(1) = 8, because (10^1)! = 3628800.
MATHEMATICA
f[n_] := Mod[6Times @@ (Rest[FoldList[{ 1 + #1[[1]], #2!2^(#1[[1]]#2)} &, {0, 0}, Reverse[IntegerDigits[n, 5]]]]), 10][[2]]; f[0] = 1; Table[ f[10^n], {n, 0, 104}]] (* Jacob A. Siehler *)
PROG
(PARI)\\ L is the list of the N digits of 2^n in base 5. \\ L[1] = a_0 , ..., L[N] = a_(N-1).
convert(n)={n=2^n; x=n; N=floor(log(n)/log(5)) + 1;
L = listcreate(N);
while(x, n=floor(n/5); r=x-5*n; listput(L, r); x=n; );
L; N
};
print("0 1"); print("1 8"); for(n=2, 1000, print1(n, " "); convert(n); q=0; t=0; x=0; forstep(i=N, 2, -1, a_i=L[i]; q+=a_i; x+=q; t+=a_i*(1-a_i%2); ); a_i=L[1]; t+=a_i*(1-a_i%2); z=(x+t/2)%4; y=2^z; an=6*(y%2)+y*(1-(y%2)); print(an)); \\ Washington Bomfim, Dec 31 2010
(Python)
from functools import reduce
from sympy.ntheory.factor_ import digits
def A173670(n): return reduce(lambda x, y:x*y%10, ((1, 1, 2, 6, 4)[a]*((6, 2, 4, 8)[i*a&3] if i*a else 1) for i, a in enumerate(digits(1<<n, 5)[-1:0:-1], n)))*6%10 if n else 1 # Chai Wah Wu, Dec 07 2023
CROSSREFS
KEYWORD
nonn,easy,base,changed
AUTHOR
Vladimir Reshetnikov, Nov 24 2010
EXTENSIONS
Extended by D. S. McNeil, Dec 12 2010
STATUS
approved