Last non-zero digit of n!
Mathematica, 45 36 bytes
Last@Select[IntegerDigits[#!],#>0&]&
Very readable for a winning answer. :) (Then again, there's no GolfScript & Co. submission yet.)
This handles input 1,000,000 in about 5 seconds on my machine.
Ruby - 63 chars
f=->n{n<2?1:6*[1,1,2,6,4,4,4,8,4,6][n%10]*3**(n/5%4)*f[n/5]%10}
Source - http://oeis.org/A008904
Handles f upto a thousand digits under a second.
Test
irb(main):014:0> for n in 2..6
irb(main):015:1> puts f[10**n]
irb(main):016:1> end
4
2
8
6
4
Python - 75
n=input()
g=1
while n:
g*=n
while g%10<1:g/=10
g%=10**9
n-=1
print g%10