ЖК
Жанбу Калбаева
Аналитического выражения функции, обратной факториалу, насколько я знаю, не существует. Просто вычисляй факториалы, пока не совпадет или не превзойдет заданное значение. Если совпадет, аргумент и есть решение.
А это гарантировано факториал будет?
Факториалы ОЧЕНЬ быстро переползают за границу чисел, доступных в C#.
Вот http://ideone.com/1u2UU3 пример.
Есть простой признак, что число МОЖЕТ быть факториалом:
Число должно делиться на 2 в достаточно большой степени.
В моём примере - это число нулей (двоичных) .
Признак проверяется просто: (N xor (N-1)) + 1 - степень двойки.
ЗЫ
Устройте массив констант-факториалов и пробегайте его при проверке.
Это САМЫЙ быстрый способ.