Я все-таки не понимаю - Вы планируете программно реализовывать арифметику работы с большими числами или нет? Если да, то умножать (т.е. искать факториал или сокращенный факториал) будет значительно проще, чем делить.
Если нет (т.е. заранее закладываемся на не очень большие числа) - тогда практически любой метод хорош. Количество чисел

, факториалы которых укладываются в 64-битное целое число, сравнительно невелико, их можно просто заранее посчитать и сравнивать проверяемое число с таблицей.
Так что все дальнейшее предполагает, что мы готовы работать с большими числами, которые не укладываются в стандартные машинные представления. При этом даже первая задача - перевести большое число из десятичного представления в двоичное - не совсем тривиальна и требует написания определенного кода. Равно как и арифметика работы с большими числами.
Добавлено спустя 8 минут 3 секунды:
В принципе получается, что мы вибираем меньшего кандидата и все-таки считаем полностью его факториал?
Нет. Мы определили степень двойки, которая входит в проверяемое нами число (обозначим ее

). Мы также умеем по заданному числу

вычислять степень двойки, которая входит в

. Мы также знаем, что эта степень не больше самого числа

. Т.е. берем

и считаем не факториал

, а степень двойки в

. Пока эта степень меньше наблюдаемой

, увеличиваем

. Если мы в точности числа

не получили, то точно не факториал. Если же при некотором

степень совпала (это может быть только на четном), то остается два кандидата -

и

.
Можно также попробовать совместить это со следующей идеей: с помощью формулы Стирлинга оценить порядок числа

(например, количество цифр в его двоичном представлении). Для полученных двух кандидатов проверить порядок с тем, который наблюдается. По моим представлениям, признак степени двойки и признак порядка всего числа довольно ортогональны, поэтому эти два (достаточно простых) критерия помогут отсеивать много не-факториалов.