Hi,
there are a couple of things you could improve:
0. The intro said "maximum 4 digits per element" but your code stores and displays 6 digits per element (which is valid but inconsistent with the task description). You could make it a const in your code and expedriment with some values...
1. Rather than allocating the array in advance, I would do that inside the Factorial() method and return the array as the result.
2. I don't expect any int/uint conversion problems. When a numeric value can be represented in both of these types, an explicit cast suffices; without a cast, the compiler may issue some warnings. Also, you could try and do it all using uints only.
3. About MAX: for large values of N the value of N! gets approximated quite well by
Stirlings formula; so you could use that formula inside Factorial() to dynamically calculate your array dimension. It would be wise to add say 3 for safety.
Beware, the Stirling formula as is obviously would yield a huge number, exceeding the range of a double or decimal. But then you don't need the value, you need the number of array elements, so a smart use of logarithms could avoid any issues. That requires you to rework the formula a bit!
:)