from math import factorial def hex_fact_trailing_zeros(n): num_2s = 0 for i in range(1, 20): p = 2 ** i num_2s += n / p return num_2s / 4 def test(): for i in range(0, 2000): f = factorial(i) z = hex_fact_trailing_zeros(i) print i if f % (16 ** z) != 0: print "too high ", i return if f % (16 ** (z+1)) == 0: print "too low ", i return print "ok!" test()