Just out curiosity, why is fact2 a bit faster than fact1? def fact1(n): return reduce (operator.mul, range(1L,n + 1)) def fact2(n): result = n * 1L for i in range(1 , n): result *= i return result -- o polite http://plusseven.com/gpg/