Last time I discussed the fact that there is a single, unique, solution to the formula x ! + y ! + z ! = x * y * z, where x, y, and z are non-negative integers.  I asked for a computer program to find the solution given that x, y, and z are all <= 9 but I wondered aloud whether the solution was unique without that constraint.

The part where a computer can't help is the uniqueness.  Here is a mathematical proof that there are no solutions if any of x, y, or z are >= 6:

Assume without loss of generality that x >= y => z.  The following two inequalities hold trivially, since we're dealing with non-negative numbers:

x ! + y ! + z ! > x !
x * y * z <= x 3

Here's where 6 comes in:

Lemma: for x >= 6, x ! > x 3 (proof momentarily.)

If this lemma were true, then we'd be done... for x >= 6,

x ! + y ! + z ! > x ! > x 3 >= x * y * z

So a search for solutions for x ! + y ! + z ! = x * y * z can be restricted to 5 >= x >= y >= z.  This is computationally feasible.
By inspection, there is a unique solution (see later in this post.)

Proof of lemma: first, look at values of x ! and x 3 for x = 0 through 7:

0! = 1 > 0 = 03
1! = 1 = 1 = 13
2! = 2 < 8 = 23
3! = 6 < 27 = 33
4! = 24 < 64 = 43
5! = 120 < 125 = 53
6! = 720 > 216 = 63
7! = 5040 > 343 = 73

It's not immediately clear how to progress.  The key idea, as often in geometric-ish progressions: look at successive ratios.  The initial 0 messes things up a bit, so we'll start with x = 1.

On the left, numbers advance by a factor of:

(x + 1)! / x ! = x + 1

Note this ratio gets bigger and bigger.

On the right, numbers advance by a factor of

(x + 1)3 / x 3 = ((x + 1) / x)3 = (1 + (1 / x))3
Note this rate of increase actually gets smaller.

The crossover point - where x ! stops losing ground and begins to catch up - is x = 3;

1 + 1 = 2 < 8 = (1 + (1/1))3
2 + 1 = 3 < 3.375 = (1 + (1/2))3
3 + 1 = 4 > 2.370370... = (1 + (1/3))3

By x = 6, the lost ground has been made up, and x ! never looks back. QED.

By the proof above, it only remains to look at the finite number of cases where x, y, and z are all <= 5.  Here they all are: note that in addition to the unique solution for the equality

x ! + y ! + z ! = x * y * z

there are only four solutions to the inequality

x ! + y ! + z ! < x * y * z

All of the other cases have

x ! + y ! + z ! > x * y * z.

 0! + 0! + 0!= 3 > 0 =0 * 0 * 0 1! + 0! + 0!= 3 > 0 =1 * 0 * 0 1! + 1! + 0!= 3 > 0 =1 * 1 * 0 1! + 1! + 1!= 3 > 1 =1 * 1 * 1 2! + 0! + 0!= 4 > 0 =2 * 0 * 0 2! + 1! + 0!= 4 > 0 =2 * 1 * 0 2! + 1! + 1!= 4 > 2 =2 * 1 * 1 2! + 2! + 0!= 5 > 0 =2 * 2 * 0 2! + 2! + 1!= 5 > 4 =2 * 2 * 1 2! + 2! + 2!= 6 < 8 =2 * 2 * 2 3! + 0! + 0!= 8 > 0 =3 * 0 * 0 3! + 1! + 0!= 8 > 0 =3 * 1 * 0 3! + 1! + 1!= 8 > 3 =3 * 1 * 1 3! + 2! + 0!= 9 > 0 =3 * 2 * 0 3! + 2! + 1!= 9 > 6 =3 * 2 * 1 3! + 2! + 2!= 10 < 12 =3 * 2 * 2 3! + 3! + 0!= 13 > 0 =3 * 3 * 0 3! + 3! + 1!= 13 > 9 =3 * 3 * 1 3! + 3! + 2!= 14 < 18 =3 * 3 * 2 3! + 3! + 3!= 18 < 27 =3 * 3 * 3 4! + 0! + 0!= 26 > 0 =4 * 0 * 0 4! + 1! + 0!= 26 > 0 =4 * 1 * 0 4! + 1! + 1!= 26 > 4 =4 * 1 * 1 4! + 2! + 0!= 27 > 0 =4 * 2 * 0 4! + 2! + 1!= 27 > 8 =4 * 2 * 1 4! + 2! + 2!= 28 > 16 =4 * 2 * 2 4! + 3! + 0!= 31 > 0 =4 * 3 * 0 4! + 3! + 1!= 31 > 12 =4 * 3 * 1 4! + 3! + 2!= 32 > 24 =4 * 3 * 2 4! + 3! + 3!= 36 = 36 =4 * 3 * 3 4! + 4! + 0!= 49 > 0 =4 * 4 * 0 4! + 4! + 1!= 49 > 16 =4 * 4 * 1 4! + 4! + 2!= 50 > 32 =4 * 4 * 2 4! + 4! + 3!= 54 > 48 =4 * 4 * 3 4! + 4! + 4!= 72 > 64 =4 * 4 * 4 5! + 0! + 0!= 122 > 0 =5 * 0 * 0 5! + 1! + 0!= 122 > 0 =5 * 1 * 0 5! + 1! + 1!= 122 > 5 =5 * 1 * 1 5! + 2! + 0!= 123 > 0 =5 * 2 * 0 5! + 2! + 1!= 123 > 10 =5 * 2 * 1 5! + 2! + 2!= 124 > 20 =5 * 2 * 2 5! + 3! + 0!= 127 > 0 =5 * 3 * 0 5! + 3! + 1!= 127 > 15 =5 * 3 * 1 5! + 3! + 2!= 128 > 30 =5 * 3 * 2 5! + 3! + 3!= 132 > 45 =5 * 3 * 3 5! + 4! + 0!= 145 > 0 =5 * 4 * 0 5! + 4! + 1!= 145 > 20 =5 * 4 * 1 5! + 4! + 2!= 146 > 40 =5 * 4 * 2 5! + 4! + 3!= 150 > 60 =5 * 4 * 3 5! + 4! + 4!= 168 > 80 =5 * 4 * 4 5! + 5! + 0!= 241 > 0 =5 * 5 * 0 5! + 5! + 1!= 241 > 25 =5 * 5 * 1 5! + 5! + 2!= 242 > 50 =5 * 5 * 2 5! + 5! + 3!= 246 > 75 =5 * 5 * 3 5! + 5! + 4!= 264 > 100 =5 * 5 * 4 5! + 5! + 5!= 360 > 125 =5 * 5 * 5

Here's the program I used to check the cases for x, y, z <= 9.  I used perl.  Note the similarity to Zbyszek's solution.

`use strict;# initialize table of factorials with 0! = 1my @fac_table = (1);# loop executes 10 times# interesting fact - solution remains unique even if you use higher bases# (e.g., change 9 to 15 for hex)for my \$i (0 .. 9) {    \$fac_table[\$i + 1] = (\$i + 1) * \$fac_table[\$i];    # loop executes 1 + 2 + ... + 9 + 10 = 55 times    for my \$j (0 .. \$i) {        # inner loop executes        # 1 +        # 1 + 2 +        # ...        # 1 + 2 + ... + 9 +        # 1 + 2 + ... + 9 + 10 times        #         # Here's how I counted that up:        # if \$i, \$j, and \$k are all different,        # there are (10 choose 3) = 10 * 9 * 8 / 1 * 2 * 3 = 120 ways        # if \$i, \$j, and \$k are all the same,        # there are 10 ways        # if \$i and \$k are different, but \$j is the same as one or the other,        # there are (10 choose 2) ways to pick \$i and \$k = 10 * 9 / 1 * 2 = 45 ways        # and two choices in each of these for \$j so there are 90 ways        # total = 120 + 10 + 90 = 220 iterations        # (verified with a loop counter)        for my \$k (0 .. \$j) {            # note \$i >= \$j >= \$k            if (\$fac_table[\$i] + \$fac_table[\$j] + \$fac_table[\$k] == \$i * \$j * \$k) {                print qq(\$i! + \$j! + \$k! == \$i * \$j * \$k\n);            }        }    }}`

A cute little exercise.